mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update tuner setup
This commit is contained in:
parent
8ef120c759
commit
86dea1fa4c
14 changed files with 394 additions and 248 deletions
|
@ -20,7 +20,6 @@
|
||||||
</div>
|
</div>
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav livetvTabs" data-mini="true" style="display:none;">
|
<div data-role="controlgroup" data-type="horizontal" class="localnav livetvTabs" data-mini="true" style="display:none;">
|
||||||
<a href="livetvstatus.html" data-role="button">${TabTuners}</a>
|
<a href="livetvstatus.html" data-role="button">${TabTuners}</a>
|
||||||
<a href="livetvguidesettings.html" data-role="button">${TabGuide}</a>
|
|
||||||
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabExternalServices}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabExternalServices}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||||
|
|
||||||
<a href="livetvstatus.html" data-role="button">${TabTuners}</a>
|
<a href="livetvstatus.html" data-role="button">${TabTuners}</a>
|
||||||
<a href="livetvguidesettings.html" data-role="button">${TabGuide}</a>
|
|
||||||
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabExternalServices}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabExternalServices}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -237,11 +237,8 @@
|
||||||
<div class="detailSectionContent" style="padding:0 1em;">
|
<div class="detailSectionContent" style="padding:0 1em;">
|
||||||
<div class="tabDetails">
|
<div class="tabDetails">
|
||||||
<p id="players"></p>
|
<p id="players"></p>
|
||||||
<p id="itemBudget"></p>
|
|
||||||
<p id="itemRevenue"></p>
|
|
||||||
<p class="itemExternalLinks"></p>
|
<p class="itemExternalLinks"></p>
|
||||||
<p class="itemStudios"></p>
|
<p class="itemStudios"></p>
|
||||||
<p class="itemKeywords"></p>
|
|
||||||
<p class="itemTags"></p>
|
<p class="itemTags"></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
77
dashboard-ui/livetvguideprovider-scd.html
Normal file
77
dashboard-ui/livetvguideprovider-scd.html
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>${TitleLiveTV}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="liveTvGuideProviderScdPage" data-role="page" class="page type-interior liveTvSettingsPage" data-helpurl="https://github.com/MediaBrowser/Wiki/wiki/Live%20TV" data-require="scripts/livetvguideprovider-scd">
|
||||||
|
|
||||||
|
<div data-role="content">
|
||||||
|
<div class="content-primary">
|
||||||
|
|
||||||
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||||
|
<a href="livetvstatus.html" data-role="button" class="ui-btn-active">${TabTuners}</a>
|
||||||
|
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
||||||
|
<a href="appservices.html?context=livetv" data-role="button">${TabExternalServices}</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="readOnlyContent" style="margin-top: 2em;">
|
||||||
|
|
||||||
|
<h1>Schedules Direct</h1>
|
||||||
|
|
||||||
|
<div style="background-color:rgba(82,181,75,.8);color:#fff;padding:.7em 1em;font-size:16px;border-radius:4px;">
|
||||||
|
${GuideProviderLoginStep}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form class="formLogin">
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<br />
|
||||||
|
<label for="txtUser">${LabelUsername}</label>
|
||||||
|
<input type="text" id="txtUser" required="required" autocomplete="off" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<br />
|
||||||
|
<label for="txtPass">${LabelPassword}</label>
|
||||||
|
<input type="password" id="txtPass" required="required" autocomplete="off" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button type="submit" data-role="none" class="clearButton">
|
||||||
|
<paper-button raised class="submit block"><iron-icon icon="check"></iron-icon><span>${ButtonSave}</span></paper-button>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<div style="background-color:rgba(82,181,75,.8);color:#fff;padding:.7em 1em;font-size:16px;border-radius:4px;">
|
||||||
|
${GuideProviderListingsStep}
|
||||||
|
</div>
|
||||||
|
<form class="formListings">
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<br />
|
||||||
|
<label for="txtZipCode">${LabelZipCode}</label>
|
||||||
|
<input type="text" id="txtZipCode" required="required" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<br />
|
||||||
|
<label for="selectListing">${LabelLineup}</label>
|
||||||
|
<select id="selectListing" data-mini="true" required="required"></select>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button type="submit" data-role="none" class="clearButton">
|
||||||
|
<paper-button raised class="submit block"><iron-icon icon="check"></iron-icon><span>${ButtonSave}</span></paper-button>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,71 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>${TitleLiveTV}</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="liveTvGuideSettingsPage" data-role="page" class="page type-interior liveTvSettingsPage" data-helpurl="https://github.com/MediaBrowser/Wiki/wiki/Live%20TV" data-require="scripts/livetvguidesettings">
|
|
||||||
|
|
||||||
<div data-role="content">
|
|
||||||
<div class="content-primary">
|
|
||||||
|
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
|
||||||
<a href="livetvstatus.html" data-role="button">${TabTuners}</a>
|
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabGuide}</a>
|
|
||||||
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
|
||||||
<a href="appservices.html?context=livetv" data-role="button">${TabExternalServices}</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="readOnlyContent" style="margin-top: 2em;">
|
|
||||||
|
|
||||||
<div class="liveTvStatusContent">
|
|
||||||
|
|
||||||
<h1>${HeaderGuideProviders}</h1>
|
|
||||||
<p>${AddGuideProviderHelp}</p>
|
|
||||||
<paper-button raised class="submit btnAddProvider block"><iron-icon icon="add"></iron-icon><span>${ButtonAdd}</span></paper-button>
|
|
||||||
<div class="providerList">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<paper-dialog class="dlgAddProvider" entry-animation="fade-in-animation" exit-animation="fade-out-animation" style="height:600px;width:300px;" with-backdrop>
|
|
||||||
|
|
||||||
<h2>${HeaderAddProvider}</h2>
|
|
||||||
|
|
||||||
<form class="formAddProvider">
|
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
<label for="selectType">${LabelType}</label>
|
|
||||||
<select id="selectType" data-mini="true">
|
|
||||||
<option value="Schedules Direct">Schedules Direct</option>
|
|
||||||
</select>
|
|
||||||
<div class="fieldDescription"><a href="http://www.schedulesdirect.org" target="_blank">Schedules Direct</a></div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<br />
|
|
||||||
<label for="txtUser">${LabelUsername}</label>
|
|
||||||
<input type="text" id="txtUser" required="required" />
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<br />
|
|
||||||
<label for="txtPass">${LabelPassword}</label>
|
|
||||||
<input type="text" id="txtPass" required="required" />
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<br />
|
|
||||||
<label for="txtZipCode">${LabelZipCode}</label>
|
|
||||||
<input type="text" id="txtZipCode" required="required" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="buttons">
|
|
||||||
<paper-button dialog-dismiss>${ButtonCancel}</paper-button>
|
|
||||||
<button data-role="none" type="submit" class="clearButton"><paper-button><span>${ButtonOk}</span></paper-button></button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</paper-dialog>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -11,12 +11,11 @@
|
||||||
|
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||||
<a href="livetvstatus.html" data-role="button">${TabTuners}</a>
|
<a href="livetvstatus.html" data-role="button">${TabTuners}</a>
|
||||||
<a href="livetvguidesettings.html" data-role="button">${TabGuide}</a>
|
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabSettings}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabSettings}</a>
|
||||||
<a href="appservices.html?context=livetv" data-role="button">${TabExternalServices}</a>
|
<a href="appservices.html?context=livetv" data-role="button">${TabExternalServices}</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form class="liveTvSettingsForm" style="display: none;">
|
<form class="liveTvSettingsForm">
|
||||||
|
|
||||||
<ul data-role="listview" class="ulForm">
|
<ul data-role="listview" class="ulForm">
|
||||||
<li>
|
<li>
|
||||||
|
@ -61,13 +60,6 @@
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
<div class="noLiveTvServices" style="display: none;">
|
|
||||||
<div class="readOnlyContent" style="margin-top: 2em;">
|
|
||||||
<p>${LiveTvPluginRequired}</p>
|
|
||||||
|
|
||||||
<p><a href="plugincatalog.html">${LiveTvPluginRequiredHelp}</a></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
|
|
||||||
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
|
||||||
<a href="#" data-role="button" class="ui-btn-active">${TabTuners}</a>
|
<a href="#" data-role="button" class="ui-btn-active">${TabTuners}</a>
|
||||||
<a href="livetvguidesettings.html" data-role="button">${TabGuide}</a>
|
|
||||||
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
<a href="livetvsettings.html" data-role="button">${TabSettings}</a>
|
||||||
<a href="appservices.html?context=livetv" data-role="button">${TabExternalServices}</a>
|
<a href="appservices.html?context=livetv" data-role="button">${TabExternalServices}</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -21,11 +20,20 @@
|
||||||
<div class="liveTvStatusContent" style="display: none;">
|
<div class="liveTvStatusContent" style="display: none;">
|
||||||
|
|
||||||
<h1>${HeaderTunerDevices}</h1>
|
<h1>${HeaderTunerDevices}</h1>
|
||||||
<paper-button raised class="submit btnAddDevice block"><iron-icon icon="add"></iron-icon><span>${ButtonAddDevice}</span></paper-button>
|
<paper-button raised class="submit btnAddDevice block"><iron-icon icon="add"></iron-icon><span>${ButtonAdd}</span></paper-button>
|
||||||
<div class="devicesList">
|
<div class="devicesList">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
<br />
|
<br />
|
||||||
|
<h1>${HeaderGuideProviders}</h1>
|
||||||
|
<p>${AddGuideProviderHelp}</p>
|
||||||
|
<paper-button raised class="submit btnAddProvider block"><iron-icon icon="add"></iron-icon><span>${ButtonAdd}</span></paper-button>
|
||||||
|
<div class="providerList">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<h1>${HeaderTvTuners}</h1>
|
<h1>${HeaderTvTuners}</h1>
|
||||||
|
|
||||||
|
@ -45,7 +53,6 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="servicesSection" style="display:none;">
|
<div class="servicesSection" style="display:none;">
|
||||||
<br />
|
|
||||||
<br />
|
<br />
|
||||||
<h1>${HeaderExternalServices}</h1>
|
<h1>${HeaderExternalServices}</h1>
|
||||||
<div class="servicesList">
|
<div class="servicesList">
|
||||||
|
|
|
@ -383,8 +383,6 @@
|
||||||
|
|
||||||
$('.itemCommunityRating', page).html(LibraryBrowser.getRatingHtml(item));
|
$('.itemCommunityRating', page).html(LibraryBrowser.getRatingHtml(item));
|
||||||
|
|
||||||
LibraryBrowser.renderBudget($('#itemBudget', page), item);
|
|
||||||
LibraryBrowser.renderRevenue($('#itemRevenue', page), item);
|
|
||||||
LibraryBrowser.renderAwardSummary($('#awardSummary', page), item);
|
LibraryBrowser.renderAwardSummary($('#awardSummary', page), item);
|
||||||
|
|
||||||
$('.itemMiscInfo', page).html(LibraryBrowser.getMiscInfoHtml(item));
|
$('.itemMiscInfo', page).html(LibraryBrowser.getMiscInfoHtml(item));
|
||||||
|
@ -405,7 +403,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
renderTags(page, item);
|
renderTags(page, item);
|
||||||
renderKeywords(page, item);
|
|
||||||
|
|
||||||
renderSeriesAirTime(page, item, context);
|
renderSeriesAirTime(page, item, context);
|
||||||
|
|
||||||
|
@ -712,25 +709,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderKeywords(page, item) {
|
|
||||||
|
|
||||||
if (item.Keywords && item.Keywords.length) {
|
|
||||||
|
|
||||||
var html = '';
|
|
||||||
html += '<p>' + Globalize.translate('HeaderPlotKeywords') + '</p>';
|
|
||||||
for (var i = 0, length = item.Keywords.length; i < length; i++) {
|
|
||||||
|
|
||||||
html += '<div class="itemTag">' + item.Keywords[i] + '</div>';
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$('.itemKeywords', page).show().html(html);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
$('.itemKeywords', page).hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getEpisodesFunction(seriesId, query) {
|
function getEpisodesFunction(seriesId, query) {
|
||||||
|
|
||||||
query = $.extend({}, query);
|
query = $.extend({}, query);
|
||||||
|
|
160
dashboard-ui/scripts/livetvguideprovider-scd.js
Normal file
160
dashboard-ui/scripts/livetvguideprovider-scd.js
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
(function ($, document, window) {
|
||||||
|
|
||||||
|
var providerId;
|
||||||
|
var listingsId;
|
||||||
|
|
||||||
|
function reload(page) {
|
||||||
|
|
||||||
|
ApiClient.getNamedConfiguration("livetv").done(function (config) {
|
||||||
|
|
||||||
|
var info = config.ListingProviders.filter(function (i) {
|
||||||
|
return i.Id == providerId;
|
||||||
|
})[0];
|
||||||
|
|
||||||
|
listingsId = info.ListingsId;
|
||||||
|
$('#selectListing', page).val(info.ListingsId || '').selectmenu('refresh');
|
||||||
|
$('#txtZipCode', page).val(info.ZipCode || '').trigger('change');
|
||||||
|
$('#txtUser', page).val(info.Username || '');
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function submitLoginForm(page) {
|
||||||
|
|
||||||
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
|
var info = {
|
||||||
|
Type: 'SchedulesDirect',
|
||||||
|
Username: $('#txtUser', page).val(),
|
||||||
|
Password: CryptoJS.SHA1($('#txtPass', page).val()).toString()
|
||||||
|
};
|
||||||
|
|
||||||
|
var id = providerId;
|
||||||
|
|
||||||
|
if (id) {
|
||||||
|
info.Id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
ApiClient.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: ApiClient.getUrl('LiveTv/ListingProviders'),
|
||||||
|
data: JSON.stringify(info),
|
||||||
|
contentType: "application/json"
|
||||||
|
|
||||||
|
}).done(function (result) {
|
||||||
|
|
||||||
|
Dashboard.processServerConfigurationUpdateResult();
|
||||||
|
|
||||||
|
}).fail(function () {
|
||||||
|
Dashboard.alert({
|
||||||
|
message: Globalize.translate('ErrorSavingTvProvider')
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function submitListingsForm(page) {
|
||||||
|
|
||||||
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
|
var id = providerId;
|
||||||
|
|
||||||
|
ApiClient.getNamedConfiguration("livetv").done(function (config) {
|
||||||
|
|
||||||
|
var info = config.ListingProviders.filter(function (i) {
|
||||||
|
return i.Id == id;
|
||||||
|
})[0];
|
||||||
|
|
||||||
|
info.ZipCode = $('#txtZipCode', page).val();
|
||||||
|
info.ListingsId = $('#selectListing', page).val();
|
||||||
|
|
||||||
|
ApiClient.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: ApiClient.getUrl('LiveTv/ListingProviders'),
|
||||||
|
data: JSON.stringify(info),
|
||||||
|
contentType: "application/json"
|
||||||
|
|
||||||
|
}).done(function (result) {
|
||||||
|
|
||||||
|
Dashboard.processServerConfigurationUpdateResult();
|
||||||
|
|
||||||
|
}).fail(function () {
|
||||||
|
Dashboard.alert({
|
||||||
|
message: Globalize.translate('ErrorSavingTvProvider')
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function refreshListings(page, value) {
|
||||||
|
|
||||||
|
if (!value) {
|
||||||
|
$('#selectListing', page).html('').selectmenu('refresh');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Dashboard.showModalLoadingMsg();
|
||||||
|
|
||||||
|
ApiClient.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: ApiClient.getUrl('LiveTv/ListingProviders/Lineups', {
|
||||||
|
Id: providerId,
|
||||||
|
Location: value
|
||||||
|
}),
|
||||||
|
dataType: 'json'
|
||||||
|
|
||||||
|
}).done(function (result) {
|
||||||
|
|
||||||
|
$('#selectListing', page).html(result.map(function (o) {
|
||||||
|
|
||||||
|
return '<option value="' + o.Id + '">' + o.name + '</option>';
|
||||||
|
|
||||||
|
})).selectmenu('refresh');
|
||||||
|
|
||||||
|
if (listingsId) {
|
||||||
|
$('#selectListing', page).val(listingsId).selectmenu('refresh');
|
||||||
|
}
|
||||||
|
|
||||||
|
Dashboard.hideModalLoadingMsg();
|
||||||
|
|
||||||
|
}).fail(function (result) {
|
||||||
|
|
||||||
|
//Dashboard.alert({
|
||||||
|
// message: Globalize.translate('ErrorGettingTvLineups')
|
||||||
|
//});
|
||||||
|
//refreshListings(page, '');
|
||||||
|
Dashboard.hideModalLoadingMsg();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).on('pageinitdepends', "#liveTvGuideProviderScdPage", function () {
|
||||||
|
|
||||||
|
var page = this;
|
||||||
|
|
||||||
|
$('.formLogin', page).on('submit', function () {
|
||||||
|
submitLoginForm(page);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.formListings', page).on('submit', function () {
|
||||||
|
submitListingsForm(page);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#txtZipCode', page).on('change', function () {
|
||||||
|
refreshListings(page, this.value);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}).on('pageshowready', "#liveTvGuideProviderScdPage", function () {
|
||||||
|
|
||||||
|
providerId = getParameterByName('id');
|
||||||
|
|
||||||
|
var page = this;
|
||||||
|
reload(page);
|
||||||
|
});
|
||||||
|
|
||||||
|
})(jQuery, document, window);
|
|
@ -1,111 +0,0 @@
|
||||||
(function ($, document, window) {
|
|
||||||
|
|
||||||
function loadPage(page) {
|
|
||||||
|
|
||||||
ApiClient.getNamedConfiguration("livetv").done(function (config) {
|
|
||||||
|
|
||||||
renderProviders(page, config.ListingProviders);
|
|
||||||
Dashboard.hideLoadingMsg();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function renderProviders(page, providers) {
|
|
||||||
|
|
||||||
var html = '';
|
|
||||||
|
|
||||||
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
|
|
||||||
|
|
||||||
for (var i = 0, length = providers.length; i < length; i++) {
|
|
||||||
|
|
||||||
var provider = providers[i];
|
|
||||||
html += '<li>';
|
|
||||||
html += '<a href="#">';
|
|
||||||
|
|
||||||
html += '<h3>';
|
|
||||||
html += provider.Name;
|
|
||||||
html += '</h3>';
|
|
||||||
|
|
||||||
html += '</a>';
|
|
||||||
html += '<a href="#" class="btnDelete">';
|
|
||||||
html += '</a>';
|
|
||||||
html += '</li>';
|
|
||||||
}
|
|
||||||
|
|
||||||
html += '</ul>';
|
|
||||||
|
|
||||||
var elem = $('.providerList', page).html(html).trigger('create');
|
|
||||||
|
|
||||||
$('.btnDelete', elem).on('click', function () {
|
|
||||||
|
|
||||||
var id = this.getAttribute('data-id');
|
|
||||||
|
|
||||||
deleteProvider(page, id);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function deleteProvider(page, id) {
|
|
||||||
|
|
||||||
var message = Globalize.translate('MessageConfirmDeleteGuideProvider');
|
|
||||||
|
|
||||||
Dashboard.confirm(message, Globalize.translate('HeaderDeleteProvider'), function (confirmResult) {
|
|
||||||
|
|
||||||
if (confirmResult) {
|
|
||||||
|
|
||||||
Dashboard.showLoadingMsg();
|
|
||||||
|
|
||||||
ApiClient.ajax({
|
|
||||||
type: "DELETE",
|
|
||||||
url: ApiClient.getUrl('LiveTv/TunerHosts', {
|
|
||||||
Id: id
|
|
||||||
})
|
|
||||||
|
|
||||||
}).done(function () {
|
|
||||||
|
|
||||||
loadPage(page);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function submitAddProviderForm(page) {
|
|
||||||
|
|
||||||
page.querySelector('.dlgAddProvider').close();
|
|
||||||
Dashboard.showLoadingMsg();
|
|
||||||
|
|
||||||
ApiClient.ajax({
|
|
||||||
type: "POST",
|
|
||||||
url: ApiClient.getUrl('LiveTv/TunerHosts'),
|
|
||||||
data: JSON.stringify({
|
|
||||||
Type: $('#selectTunerDeviceType', page).val(),
|
|
||||||
Url: $('#txtDevicePath', page).val()
|
|
||||||
}),
|
|
||||||
contentType: "application/json"
|
|
||||||
|
|
||||||
}).done(function () {
|
|
||||||
|
|
||||||
loadPage(page);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).on('pageinitdepends', "#liveTvGuideSettingsPage", function () {
|
|
||||||
|
|
||||||
var page = this;
|
|
||||||
|
|
||||||
$('.btnAddProvider', page).on('click', function () {
|
|
||||||
page.querySelector('.dlgAddProvider').open();
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.formAddProvider', page).on('submit', function () {
|
|
||||||
submitAddProviderForm(page);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
}).on('pageshowready', "#liveTvGuideSettingsPage", function () {
|
|
||||||
|
|
||||||
var page = this;
|
|
||||||
|
|
||||||
loadPage(page);
|
|
||||||
});
|
|
||||||
|
|
||||||
})(jQuery, document, window);
|
|
|
@ -1,17 +1,10 @@
|
||||||
(function ($, document, window) {
|
(function ($, document, window) {
|
||||||
|
|
||||||
function loadPage(page, config, liveTvInfo) {
|
function loadPage(page, config) {
|
||||||
|
|
||||||
if (liveTvInfo.IsEnabled) {
|
|
||||||
|
|
||||||
$('.liveTvSettingsForm', page).show();
|
$('.liveTvSettingsForm', page).show();
|
||||||
$('.noLiveTvServices', page).hide();
|
$('.noLiveTvServices', page).hide();
|
||||||
|
|
||||||
} else {
|
|
||||||
$('.liveTvSettingsForm', page).hide();
|
|
||||||
$('.noLiveTvServices', page).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
$('#selectGuideDays', page).val(config.GuideDays || '').selectmenu('refresh');
|
$('#selectGuideDays', page).val(config.GuideDays || '').selectmenu('refresh');
|
||||||
|
|
||||||
$('#chkMovies', page).checked(config.EnableMovieProviders).checkboxradio("refresh");
|
$('#chkMovies', page).checked(config.EnableMovieProviders).checkboxradio("refresh");
|
||||||
|
@ -47,13 +40,9 @@
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
|
||||||
var promise1 = ApiClient.getNamedConfiguration("livetv");
|
ApiClient.getNamedConfiguration("livetv").done(function (config) {
|
||||||
|
|
||||||
var promise2 = ApiClient.getLiveTvInfo();
|
loadPage(page, config);
|
||||||
|
|
||||||
$.when(promise1, promise2).done(function (response1, response2) {
|
|
||||||
|
|
||||||
loadPage(page, response1[0], response2[0]);
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -177,6 +177,7 @@
|
||||||
ApiClient.getNamedConfiguration("livetv").done(function (config) {
|
ApiClient.getNamedConfiguration("livetv").done(function (config) {
|
||||||
|
|
||||||
renderDevices(page, config.TunerHosts);
|
renderDevices(page, config.TunerHosts);
|
||||||
|
renderProviders(page, config.ListingProviders);
|
||||||
});
|
});
|
||||||
|
|
||||||
Dashboard.hideLoadingMsg();
|
Dashboard.hideLoadingMsg();
|
||||||
|
@ -210,7 +211,7 @@
|
||||||
html += '</p>';
|
html += '</p>';
|
||||||
|
|
||||||
html += '</a>';
|
html += '</a>';
|
||||||
html += '<a href="#" class="btnDeleteDevice">';
|
html += '<a href="#" class="btnDeleteDevice" data-id="' + device.Id + '">';
|
||||||
html += '</a>';
|
html += '</a>';
|
||||||
html += '</li>';
|
html += '</li>';
|
||||||
}
|
}
|
||||||
|
@ -279,15 +280,128 @@
|
||||||
}).done(function () {
|
}).done(function () {
|
||||||
|
|
||||||
reload(page);
|
reload(page);
|
||||||
|
|
||||||
|
}).fail(function () {
|
||||||
|
Dashboard.alert({
|
||||||
|
message: Globalize.translate('ErrorAddingTunerDevice')
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderProviders(page, providers) {
|
||||||
|
|
||||||
|
var html = '';
|
||||||
|
|
||||||
|
html += '<ul data-role="listview" data-inset="true" data-split-icon="delete">';
|
||||||
|
|
||||||
|
for (var i = 0, length = providers.length; i < length; i++) {
|
||||||
|
|
||||||
|
var provider = providers[i];
|
||||||
|
html += '<li>';
|
||||||
|
html += '<a href="' + getProviderConfigurationUrl(provider.Type) + '?id=' + provider.Id + '">';
|
||||||
|
|
||||||
|
html += '<h3>';
|
||||||
|
html += getProviderName(provider.Type);
|
||||||
|
html += '</h3>';
|
||||||
|
|
||||||
|
html += '</a>';
|
||||||
|
html += '<a href="#" class="btnDelete" data-id="' + provider.Id + '">';
|
||||||
|
html += '</a>';
|
||||||
|
html += '</li>';
|
||||||
|
}
|
||||||
|
|
||||||
|
html += '</ul>';
|
||||||
|
|
||||||
|
var elem = $('.providerList', page).html(html).trigger('create');
|
||||||
|
|
||||||
|
$('.btnDelete', elem).on('click', function () {
|
||||||
|
|
||||||
|
var id = this.getAttribute('data-id');
|
||||||
|
|
||||||
|
deleteProvider(page, id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteProvider(page, id) {
|
||||||
|
|
||||||
|
var message = Globalize.translate('MessageConfirmDeleteGuideProvider');
|
||||||
|
|
||||||
|
Dashboard.confirm(message, Globalize.translate('HeaderDeleteProvider'), function (confirmResult) {
|
||||||
|
|
||||||
|
if (confirmResult) {
|
||||||
|
|
||||||
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
|
ApiClient.ajax({
|
||||||
|
type: "DELETE",
|
||||||
|
url: ApiClient.getUrl('LiveTv/ListingProviders', {
|
||||||
|
Id: id
|
||||||
|
})
|
||||||
|
|
||||||
|
}).always(function () {
|
||||||
|
|
||||||
|
reload(page);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getProviderName(providerId) {
|
||||||
|
|
||||||
|
providerId = providerId.toLowerCase();
|
||||||
|
|
||||||
|
switch (providerId) {
|
||||||
|
|
||||||
|
case 'schedulesdirect':
|
||||||
|
return 'Schedules Direct';
|
||||||
|
default:
|
||||||
|
return 'Unknown';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getProviderConfigurationUrl(providerId) {
|
||||||
|
|
||||||
|
providerId = providerId.toLowerCase();
|
||||||
|
|
||||||
|
switch (providerId) {
|
||||||
|
|
||||||
|
case 'schedulesdirect':
|
||||||
|
return 'livetvguideprovider-scd.html';
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function addProvider(button) {
|
||||||
|
|
||||||
|
var menuItems = [];
|
||||||
|
|
||||||
|
menuItems.push({
|
||||||
|
name: 'Schedules Direct (USA / Canada)',
|
||||||
|
id: 'SchedulesDirect'
|
||||||
|
});
|
||||||
|
|
||||||
|
require(['actionsheet'], function () {
|
||||||
|
|
||||||
|
ActionSheetElement.show({
|
||||||
|
items: menuItems,
|
||||||
|
positionTo: button,
|
||||||
|
callback: function (id) {
|
||||||
|
|
||||||
|
Dashboard.navigate(getProviderConfigurationUrl(id));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
$(document).on('pageinitdepends', "#liveTvStatusPage", function () {
|
$(document).on('pageinitdepends', "#liveTvStatusPage", function () {
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
|
||||||
$('.btnAddDevice', page).on('click', function () {
|
$('.btnAddDevice', page).on('click', function () {
|
||||||
|
$('#txtDevicePath', page).val('');
|
||||||
page.querySelector('.dlgAddDevice').open();
|
page.querySelector('.dlgAddDevice').open();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -296,6 +410,10 @@
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('.btnAddProvider', page).on('click', function () {
|
||||||
|
addProvider(this);
|
||||||
|
});
|
||||||
|
|
||||||
}).on('pageshowready', "#liveTvStatusPage", function () {
|
}).on('pageshowready', "#liveTvStatusPage", function () {
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
|
|
@ -139,12 +139,15 @@
|
||||||
profile.MusicStreamingTranscodingBitrate = Math.min(bitrateSetting, 192000);
|
profile.MusicStreamingTranscodingBitrate = Math.min(bitrateSetting, 192000);
|
||||||
|
|
||||||
profile.DirectPlayProfiles = [];
|
profile.DirectPlayProfiles = [];
|
||||||
|
|
||||||
|
if (canPlayH264()) {
|
||||||
profile.DirectPlayProfiles.push({
|
profile.DirectPlayProfiles.push({
|
||||||
Container: 'mp4,m4v',
|
Container: 'mp4,m4v',
|
||||||
Type: 'Video',
|
Type: 'Video',
|
||||||
VideoCodec: 'h264',
|
VideoCodec: 'h264',
|
||||||
AudioCodec: 'aac,mp3'
|
AudioCodec: 'aac,mp3'
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if ($.browser.chrome) {
|
if ($.browser.chrome) {
|
||||||
profile.DirectPlayProfiles.push({
|
profile.DirectPlayProfiles.push({
|
||||||
|
@ -1717,11 +1720,20 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function canPlayH264() {
|
||||||
|
|
||||||
|
if (navigator.userAgent.toLowerCase().indexOf('firefox') != -1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
self._canPlayWebm = null;
|
self._canPlayWebm = null;
|
||||||
self.canPlayWebm = function () {
|
self.canPlayWebm = function () {
|
||||||
|
|
||||||
if (self._canPlayWebm == null) {
|
if (self._canPlayWebm == null) {
|
||||||
self._canPlayWebm = ($.browser.android && AppInfo.isNativeApp) || document.createElement('video').canPlayType('video/webm').replace(/no/, '');
|
self._canPlayWebm = document.createElement('video').canPlayType('video/webm').replace(/no/, '');
|
||||||
}
|
}
|
||||||
return self._canPlayWebm;
|
return self._canPlayWebm;
|
||||||
};
|
};
|
||||||
|
|
|
@ -112,8 +112,8 @@ var Dashboard = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
Dashboard.hideLoadingMsg();
|
Dashboard.hideLoadingMsg();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getCurrentUser: function () {
|
getCurrentUser: function () {
|
||||||
|
@ -518,8 +518,8 @@ var Dashboard = {
|
||||||
},
|
},
|
||||||
|
|
||||||
showModalLoadingMsg: function () {
|
showModalLoadingMsg: function () {
|
||||||
Dashboard.showLoadingMsg();
|
|
||||||
Dashboard.getModalLoadingMsg().show();
|
Dashboard.getModalLoadingMsg().show();
|
||||||
|
Dashboard.showLoadingMsg();
|
||||||
},
|
},
|
||||||
|
|
||||||
hideModalLoadingMsg: function () {
|
hideModalLoadingMsg: function () {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue