1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

added a live tv status page

This commit is contained in:
Luke Pulverenti 2014-01-22 15:46:01 -05:00
parent 9db90f464a
commit 0cadf2308a
36 changed files with 152 additions and 225 deletions

View file

@ -172,11 +172,15 @@
.labelPageSize {
margin-left: 1em!important;
display: inline !important;
}
.pageSizeContainer {
display: inline-block;
}
@media all and (max-width: 650px) {
.labelPageSize, .selectPageSize {
.pageSizeContainer {
display: none!important;
}
}

View file

@ -8,18 +8,17 @@
<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">Status</a>
<a href="#" data-role="button" class="ui-btn-active">Settings</a>
</div>
<form class="liveTvSettingsForm" style="display: none;">
<div style="margin-top: 2.5em;">
<p>Active service: <span id="activeServiceName"></span></p>
<p>Status: <span id="activeServiceStatus"></span></p>
<p>Version: <span id="activeServiceVersion"></span></p>
</div>
<br />
<br />
<ul data-role="listview" class="ulForm">
<li>
<label for="selectActiveService">Change active service: </label>
<label for="selectActiveService">Active service: </label>
<select id="selectActiveService" data-mini="true">
</select>
<div class="fieldDescription">Multiple tv plugins can be installed but only one can be active at a time.</div>

View file

@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<head>
<title>Live TV</title>
</head>
<body>
<div id="liveTvStatusPage" data-role="page" class="page type-interior liveTvSettingsPage">
<div data-role="content">
<div class="content-primary">
<div data-role="controlgroup" data-type="horizontal" class="localnav" data-mini="true">
<a href="#" data-role="button" class="ui-btn-active">Status</a>
<a href="livetvsettings.html" data-role="button">Settings</a>
</div>
<div class="readOnlyContent" style="margin-top: 2em;">
<div class="liveTvStatusContent" style="display: none;">
<div style="margin-top: 2.5em;">
<p>Service: <span id="activeServiceName"></span></p>
<p>Status: <span id="activeServiceStatus"></span></p>
<p>Version: <span id="activeServiceVersion"></span></p>
</div>
</div>
<div class="noLiveTvServices" style="display: none;">
<p>A Live TV service provider plugin is required in order to continue.</p>
<p>Please <a href="plugincatalog.html">install</a> one of our available plugins, such as ServerWmc.</p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -1,9 +1,13 @@
var DashboardPage = {
newsStartIndex: 0,
onPageShow: function () {
var page = this;
DashboardPage.newsStartIndex = 0;
Dashboard.showLoadingMsg();
DashboardPage.pollForInfo(page);
DashboardPage.startInterval();
@ -27,11 +31,12 @@
reloadNews: function (page) {
ApiClient.getProductNews({
var query = {
StartIndex: DashboardPage.newsStartIndex,
Limit: 5
};
limit: 6
}).done(function (result) {
ApiClient.getProductNews(query).done(function (result) {
var html = result.Items.map(function (item) {
@ -49,7 +54,24 @@
return itemHtml;
});
$('.latestNewsItems', page).html(html.join(''));
var pagingHtml = '';
pagingHtml += '<div>';
pagingHtml += LibraryBrowser.getPagingHtml(query, result.TotalRecordCount, false, [], false);
pagingHtml += '</div>';
html = html.join('') + pagingHtml;
var elem = $('.latestNewsItems', page).html(html).trigger('create');
$('.btnNextPage', elem).on('click', function () {
DashboardPage.newsStartIndex += query.Limit;
DashboardPage.reloadNews(page);
});
$('.btnPreviousPage', elem).on('click', function () {
DashboardPage.newsStartIndex -= query.Limit;
DashboardPage.reloadNews(page);
});
});
},

View file

@ -92,11 +92,6 @@
$('.availableImagesList', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
browsableImageStartIndex = (parseInt(this.value) - 1) * browsableImagePageSize;
reloadBrowsableImages(page);
});
$('.btnNextPage', page).on('click', function () {
browsableImageStartIndex += browsableImagePageSize;
reloadBrowsableImages(page);
@ -228,20 +223,6 @@
var html = '';
var pageCount = Math.ceil(totalRecordCount / limit);
var pageNumber = (startIndex / limit) + 1;
var dropdownHtml = '<select class="selectPage" data-enhance="false" data-role="none">';
for (var i = 1; i <= pageCount; i++) {
if (i == pageNumber) {
dropdownHtml += '<option value="' + i + '" selected="selected">' + i + '</option>';
} else {
dropdownHtml += '<option value="' + i + '">' + i + '</option>';
}
}
dropdownHtml += '</select>';
var recordsEnd = Math.min(startIndex + limit, totalRecordCount);
// 20 is the minimum page size
@ -254,16 +235,14 @@
var startAtDisplay = totalRecordCount ? startIndex + 1 : 0;
html += startAtDisplay + '-' + recordsEnd + ' of ' + totalRecordCount;
if (showControls) {
html += ', page ' + dropdownHtml + ' of ' + pageCount;
}
html += '</span>';
if (showControls) {
html += '<div data-role="controlgroup" data-type="horizontal" style="display:inline-block;">';
html += '<button data-icon="arrow-l" data-iconpos="notext" data-inline="true" data-mini="true" class="btnPreviousPage" ' + (startIndex ? '' : 'disabled') + '>Previous Page</button>';
html += '<button data-icon="arrow-r" data-iconpos="notext" data-inline="true" data-mini="true" class="btnNextPage" ' + (startIndex + limit > totalRecordCount ? 'disabled' : '') + '>Next Page</button>';
html += '</div>';
}
html += '</div>';

View file

@ -46,11 +46,6 @@
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -41,11 +41,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -44,11 +44,6 @@
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -42,11 +42,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -36,11 +36,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -488,12 +488,6 @@
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
loadItems(page, query);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex = query.StartIndex + query.Limit;

View file

@ -49,11 +49,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -1434,20 +1434,6 @@
var html = '';
var pageCount = Math.ceil(totalRecordCount / query.Limit);
var pageNumber = (query.StartIndex / query.Limit) + 1;
var dropdownHtml = '<select class="selectPage" data-enhance="false" data-role="none">';
for (var i = 1; i <= pageCount; i++) {
if (i == pageNumber) {
dropdownHtml += '<option value="' + i + '" selected="selected">' + i + '</option>';
} else {
dropdownHtml += '<option value="' + i + '">' + i + '</option>';
}
}
dropdownHtml += '</select>';
var recordsEnd = Math.min(query.StartIndex + query.Limit, totalRecordCount);
// 20 is the minimum page size
@ -1460,10 +1446,6 @@
var startAtDisplay = totalRecordCount ? query.StartIndex + 1 : 0;
html += startAtDisplay + '-' + recordsEnd + ' of ' + totalRecordCount;
if (showControls) {
//html += ', page ' + dropdownHtml + ' of ' + pageCount;
}
html += '</span>';
if (showControls) {
@ -1471,7 +1453,7 @@
html += '<div data-role="controlgroup" data-type="horizontal" style="display:inline-block;">';
html += '<button data-icon="arrow-l" data-iconpos="notext" data-inline="true" data-mini="true" class="btnPreviousPage" ' + (query.StartIndex ? '' : 'disabled') + '>Previous Page</button>';
html += '<button data-icon="arrow-r" data-iconpos="notext" data-inline="true" data-mini="true" class="btnNextPage" ' + (query.StartIndex + query.Limit > totalRecordCount ? 'disabled' : '') + '>Next Page</button>';
html += '<button data-icon="arrow-r" data-iconpos="notext" data-inline="true" data-mini="true" class="btnNextPage" ' + (query.StartIndex + query.Limit >= totalRecordCount ? 'disabled' : '') + '>Next Page</button>';
html += '</div>';
if (showLimit !== false) {
@ -1497,7 +1479,7 @@
}
// Add styles to defeat jquery mobile
html += '<label style="display:inline;font-size:inherit;" class="labelPageSize" for="' + id + '">Limit: </label><select class="selectPageSize" id="' + id + '" data-enhance="false" data-role="none">' + options + '</select>';
html += '<div class="pageSizeContainer"><label style="font-size:inherit;" class="labelPageSize" for="' + id + '">Limit: </label><select class="selectPageSize" id="' + id + '" data-inline="true" data-mini="true">' + options + '</select></div>';
}
}

View file

@ -295,11 +295,6 @@
$('.listBottomPaging', page).empty();
}
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -25,11 +25,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -70,11 +70,6 @@
var channelPagingHtml = LibraryBrowser.getPagingHtml(channelQuery, channelsResult.TotalRecordCount, false, [10, 20, 30, 50, 100]);
$('.channelPaging', page).html(channelPagingHtml).trigger('create');
$('.selectPage', page).on('change', function () {
channelQuery.StartIndex = (parseInt(this.value) - 1) * channelQuery.Limit;
reloadChannels(page);
});
$('.btnNextPage', page).on('click', function () {
channelQuery.StartIndex += channelQuery.Limit;
reloadChannels(page);

View file

@ -37,11 +37,6 @@
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -20,37 +20,6 @@
$('#selectActiveService', page).html(serviceOptions).selectmenu('refresh');
var service = liveTvInfo.Services.filter(function (s) {
return s.Name == liveTvInfo.ActiveServiceName;
})[0] || {};
if (service.HomePageUrl) {
$('#activeServiceName', page).html('<a href="' + service.HomePageUrl + '" target="_blank">' + liveTvInfo.ActiveServiceName + '</a>').trigger('create');
} else {
$('#activeServiceName', page).html(liveTvInfo.ActiveServiceName);
}
var versionHtml = service.Version || 'Unknown';
if (service.HasUpdateAvailable) {
versionHtml += ' <span style="color:green; margin-left: .25em;">(Update available)</span>';
} else {
versionHtml += '<img src="css/images/checkmarkgreen.png" style="height: 17px; margin-left: 10px; margin-right: 0; position: relative; top: 4px;" /> Up to date!';
}
$('#activeServiceVersion', page).html(versionHtml);
var status = liveTvInfo.Status;
if (status != 'Ok') {
if (liveTvInfo.StatusMessage) {
status += ' (' + liveTvInfo.StatusMessage + ')';
}
status = '<span style="color:red;">' + status + '</span>';
}
$('#activeServiceStatus', page).html(status);
Dashboard.hideLoadingMsg();
}

View file

@ -0,0 +1,68 @@
(function ($, document, window) {
function loadPage(page, liveTvInfo) {
if (liveTvInfo.IsEnabled) {
$('.liveTvStatusContent', page).show();
$('.noLiveTvServices', page).hide();
} else {
$('.liveTvStatusContent', page).hide();
$('.noLiveTvServices', page).show();
}
var service = liveTvInfo.Services.filter(function (s) {
return s.Name == liveTvInfo.ActiveServiceName;
})[0] || {};
var serviceUrl = service.HomePageUrl || '#';
$('#activeServiceName', page).html('<a href="' + serviceUrl + '" target="_blank">' + liveTvInfo.ActiveServiceName + '</a>').trigger('create');
var versionHtml = service.Version || 'Unknown';
if (service.HasUpdateAvailable) {
versionHtml += ' <a style="margin-left: .25em;" href="' + serviceUrl + '" target="_blank">(Update available)</a>';
}
else {
versionHtml += '<img src="css/images/checkmarkgreen.png" style="height: 17px; margin-left: 10px; margin-right: 0; position: relative; top: 4px;" /> Up to date!';
}
$('#activeServiceVersion', page).html(versionHtml);
var status = liveTvInfo.Status;
if (liveTvInfo.Status == 'Ok') {
status = '<span style="color:green;">' + status + '</span>';
} else {
if (liveTvInfo.StatusMessage) {
status += ' (' + liveTvInfo.StatusMessage + ')';
}
status = '<span style="color:red;">' + status + '</span>';
}
$('#activeServiceStatus', page).html(status);
Dashboard.hideLoadingMsg();
}
$(document).on('pageshow', "#liveTvStatusPage", function () {
Dashboard.showLoadingMsg();
var page = this;
ApiClient.getLiveTvInfo().done(function (liveTvInfo) {
loadPage(page, liveTvInfo);
});
});
})(jQuery, document, window);

View file

@ -42,11 +42,6 @@
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -42,11 +42,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -44,11 +44,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -68,11 +68,6 @@
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -42,11 +42,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -42,11 +42,6 @@
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -42,11 +42,6 @@
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -59,11 +59,6 @@
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -41,11 +41,6 @@
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -42,11 +42,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -42,11 +42,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -755,7 +755,7 @@ var Dashboard = {
selected: page.hasClass("pluginConfigurationPage")
}, {
name: "Live TV",
href: "livetvsettings.html",
href: "livetvstatus.html",
selected: page.hasClass("liveTvSettingsPage")
}, {
name: "Users",

View file

@ -62,11 +62,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -45,11 +45,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -44,11 +44,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -72,11 +72,6 @@
$('#items', page).html(html).trigger('create').createPosterItemHoverMenu();
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);

View file

@ -45,11 +45,6 @@
$('#items', page).html(html).trigger('create');
$('.selectPage', page).on('change', function () {
query.StartIndex = (parseInt(this.value) - 1) * query.Limit;
reloadItems(page);
});
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;
reloadItems(page);