mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update live tv screens
This commit is contained in:
parent
c5df20e53c
commit
fb7730efd3
15 changed files with 77 additions and 57 deletions
|
@ -14,12 +14,12 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {},
|
"devDependencies": {},
|
||||||
"ignore": [],
|
"ignore": [],
|
||||||
"version": "1.4.299",
|
"version": "1.4.301",
|
||||||
"_release": "1.4.299",
|
"_release": "1.4.301",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "1.4.299",
|
"tag": "1.4.301",
|
||||||
"commit": "7e708cf27aa74f7f0d0aaa30d95d3e1f09b71ce3"
|
"commit": "641d27d968fc4dfd461f74b208f51905bab1926b"
|
||||||
},
|
},
|
||||||
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
|
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
|
||||||
"_target": "^1.2.1",
|
"_target": "^1.2.1",
|
||||||
|
|
|
@ -356,8 +356,9 @@ button {
|
||||||
right: 0;
|
right: 0;
|
||||||
margin: 0 .35em .5em 0;
|
margin: 0 .35em .5em 0;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
padding: 6px;
|
||||||
/*opacity: 0;
|
/*opacity: 0;
|
||||||
transition: opacity 0.5s ease-in; /* vendorless fallback */ */;
|
transition: opacity 0.5s ease-in; */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*.card:hover .cardOverlayButton {
|
/*.card:hover .cardOverlayButton {
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
background: transparent;
|
background: transparent;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
color: #52B54B;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.emby-button > i {
|
.emby-button > i {
|
||||||
|
@ -151,8 +150,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.paper-icon-button-light > i {
|
.paper-icon-button-light > i {
|
||||||
width: auto;
|
width: 1em;
|
||||||
height: auto;
|
height: 1em;
|
||||||
font-size: 1.6em;
|
font-size: 1.6em;
|
||||||
/* Make sure its on top of the ripple */
|
/* Make sure its on top of the ripple */
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
|
@ -157,7 +157,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
|
||||||
if (options.year !== false && item.ProductionYear && item.Type == "Series") {
|
if (options.year !== false && item.ProductionYear && item.Type == "Series") {
|
||||||
|
|
||||||
if (item.Status == "Continuing") {
|
if (item.Status == "Continuing") {
|
||||||
miscInfo.push(globalize.translate('sharedcomponents#ValueSeriesYearToPresent', item.ProductionYear));
|
miscInfo.push(globalize.translate('sharedcomponents#SeriesYearToPresent', item.ProductionYear));
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (item.ProductionYear) {
|
else if (item.ProductionYear) {
|
||||||
|
|
|
@ -148,7 +148,7 @@ define(['appStorage', 'browser'], function (appStorage, browser) {
|
||||||
features.push('fullscreen');
|
features.push('fullscreen');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (browser.chrome || (browser.safari && !browser.mobile)) {
|
if (browser.chrome || (browser.safari && !browser.slow) || (browser.edge && !browser.slow)) {
|
||||||
features.push('imageanalysis');
|
features.push('imageanalysis');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@ define(['appStorage', 'browser'], function (appStorage, browser) {
|
||||||
var version = window.dashboardVersion || '3.0';
|
var version = window.dashboardVersion || '3.0';
|
||||||
|
|
||||||
return {
|
return {
|
||||||
dvrFeatureCode: Dashboard.isConnectMode() ? 'dvr' : 'dvrl',
|
dvrFeatureCode: Dashboard.isConnectMode() ? 'dvr' : 'dvr-l',
|
||||||
getWindowState: function () {
|
getWindowState: function () {
|
||||||
return document.windowState || 'Normal';
|
return document.windowState || 'Normal';
|
||||||
},
|
},
|
||||||
|
|
|
@ -100,7 +100,7 @@
|
||||||
showParentTitle: section.showParentTitle,
|
showParentTitle: section.showParentTitle,
|
||||||
scalable: true,
|
scalable: true,
|
||||||
overlayPlayButton: section.overlayPlayButton,
|
overlayPlayButton: section.overlayPlayButton,
|
||||||
overlayMoreButton: section.overlayMoreButton,
|
overlayMoreButton: section.overlayMoreButton && !cardLayout,
|
||||||
action: section.action,
|
action: section.action,
|
||||||
allowBottomPadding: !enableScrollX(),
|
allowBottomPadding: !enableScrollX(),
|
||||||
cardLayout: cardLayout,
|
cardLayout: cardLayout,
|
||||||
|
|
|
@ -144,7 +144,7 @@
|
||||||
<div class="pageTabContent ehsContent" id="scheduleTab" data-index="4">
|
<div class="pageTabContent ehsContent" id="scheduleTab" data-index="4">
|
||||||
<div id="activeRecordings" class="homePageSection hide">
|
<div id="activeRecordings" class="homePageSection hide">
|
||||||
<h1 class="listHeader">${HeaderActiveRecordings}</h1>
|
<h1 class="listHeader">${HeaderActiveRecordings}</h1>
|
||||||
<div class="recordingItems"></div>
|
<div is="emby-itemscontainer" class="recordingItems itemsContainer"></div>
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
<div id="upcomingRecordings" class="homePageSection hide">
|
<div id="upcomingRecordings" class="homePageSection hide">
|
||||||
|
|
|
@ -64,7 +64,7 @@
|
||||||
preferThumb: !query.IsMovie && params.type != 'RecordingSeries',
|
preferThumb: !query.IsMovie && params.type != 'RecordingSeries',
|
||||||
inheritThumb: params.type == 'Recordings',
|
inheritThumb: params.type == 'Recordings',
|
||||||
context: 'livetv',
|
context: 'livetv',
|
||||||
centerText: true,
|
centerText: !supportsImageAnalysis,
|
||||||
lazy: true,
|
lazy: true,
|
||||||
overlayText: false,
|
overlayText: false,
|
||||||
showParentTitleOrTitle: true,
|
showParentTitleOrTitle: true,
|
||||||
|
|
|
@ -90,7 +90,8 @@
|
||||||
centerText: !cardLayout,
|
centerText: !cardLayout,
|
||||||
vibrant: supportsImageAnalysis,
|
vibrant: supportsImageAnalysis,
|
||||||
allowBottomPadding: !enableScrollX(),
|
allowBottomPadding: !enableScrollX(),
|
||||||
preferThumb: 'auto'
|
preferThumb: 'auto',
|
||||||
|
overlayText: false
|
||||||
|
|
||||||
}, cardOptions || {}));
|
}, cardOptions || {}));
|
||||||
|
|
||||||
|
@ -120,8 +121,7 @@
|
||||||
cardLayout: true,
|
cardLayout: true,
|
||||||
vibrant: true,
|
vibrant: true,
|
||||||
preferThumb: true,
|
preferThumb: true,
|
||||||
coverImage: true,
|
coverImage: true
|
||||||
overlayText: false
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -217,6 +217,7 @@
|
||||||
var moviesPromise;
|
var moviesPromise;
|
||||||
var seriesPromise;
|
var seriesPromise;
|
||||||
var latestPromise;
|
var latestPromise;
|
||||||
|
var lastFullRender = 0;
|
||||||
|
|
||||||
categorysyncbuttons.init(tabContent);
|
categorysyncbuttons.init(tabContent);
|
||||||
|
|
||||||
|
@ -229,6 +230,10 @@
|
||||||
self.renderTab();
|
self.renderTab();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function enableFullRender() {
|
||||||
|
return (new Date().getTime() - lastFullRender) > 300000;
|
||||||
|
}
|
||||||
|
|
||||||
self.preRender = function () {
|
self.preRender = function () {
|
||||||
|
|
||||||
activeRecordingsPromise = ApiClient.getLiveTvRecordings({
|
activeRecordingsPromise = ApiClient.getLiveTvRecordings({
|
||||||
|
@ -240,6 +245,10 @@
|
||||||
EnableImageTypes: "Primary,Thumb,Backdrop"
|
EnableImageTypes: "Primary,Thumb,Backdrop"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (!enableFullRender()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
latestPromise = ApiClient.getLiveTvRecordings({
|
latestPromise = ApiClient.getLiveTvRecordings({
|
||||||
|
|
||||||
UserId: Dashboard.getCurrentUserId(),
|
UserId: Dashboard.getCurrentUserId(),
|
||||||
|
@ -291,23 +300,29 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
self.renderTab = function () {
|
self.renderTab = function () {
|
||||||
Dashboard.showLoadingMsg();
|
|
||||||
|
|
||||||
renderActiveRecordings(tabContent, activeRecordingsPromise);
|
renderActiveRecordings(tabContent, activeRecordingsPromise);
|
||||||
renderLatestRecordings(tabContent, latestPromise);
|
|
||||||
renderMovieRecordings(tabContent, moviesPromise);
|
|
||||||
renderEpisodeRecordings(tabContent, seriesPromise);
|
|
||||||
renderSportsRecordings(tabContent, sportsPromise);
|
|
||||||
renderKidsRecordings(tabContent, kidsPromise);
|
|
||||||
|
|
||||||
ApiClient.getLiveTvRecordingGroups({
|
if (enableFullRender()) {
|
||||||
|
Dashboard.showLoadingMsg();
|
||||||
|
|
||||||
userId: Dashboard.getCurrentUserId()
|
renderLatestRecordings(tabContent, latestPromise);
|
||||||
|
renderMovieRecordings(tabContent, moviesPromise);
|
||||||
|
renderEpisodeRecordings(tabContent, seriesPromise);
|
||||||
|
renderSportsRecordings(tabContent, sportsPromise);
|
||||||
|
renderKidsRecordings(tabContent, kidsPromise);
|
||||||
|
|
||||||
}).then(function (result) {
|
ApiClient.getLiveTvRecordingGroups({
|
||||||
|
|
||||||
renderRecordingGroups(tabContent, result.Items);
|
userId: Dashboard.getCurrentUserId()
|
||||||
});
|
|
||||||
|
}).then(function (result) {
|
||||||
|
|
||||||
|
renderRecordingGroups(tabContent, result.Items);
|
||||||
|
});
|
||||||
|
|
||||||
|
lastFullRender = new Date().getTime();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -103,9 +103,12 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function reload(page) {
|
var lastFullRender = 0;
|
||||||
|
function enableFullRender() {
|
||||||
|
return (new Date().getTime() - lastFullRender) > 300000;
|
||||||
|
}
|
||||||
|
|
||||||
loadRecommendedPrograms(page);
|
function reload(page) {
|
||||||
|
|
||||||
renderActiveRecordings(page, ApiClient.getLiveTvRecordings({
|
renderActiveRecordings(page, ApiClient.getLiveTvRecordings({
|
||||||
UserId: Dashboard.getCurrentUserId(),
|
UserId: Dashboard.getCurrentUserId(),
|
||||||
|
@ -115,6 +118,12 @@
|
||||||
EnableImageTypes: "Primary,Thumb,Backdrop"
|
EnableImageTypes: "Primary,Thumb,Backdrop"
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
if (!enableFullRender()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
loadRecommendedPrograms(page);
|
||||||
|
|
||||||
ApiClient.getLiveTvRecommendedPrograms({
|
ApiClient.getLiveTvRecommendedPrograms({
|
||||||
|
|
||||||
userId: Dashboard.getCurrentUserId(),
|
userId: Dashboard.getCurrentUserId(),
|
||||||
|
@ -181,6 +190,7 @@
|
||||||
|
|
||||||
renderItems(page, result.Items, 'upcomingKidsItems');
|
renderItems(page, result.Items, 'upcomingKidsItems');
|
||||||
});
|
});
|
||||||
|
lastFullRender = new Date().getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderItems(page, items, sectionClass, overlayButton, shape) {
|
function renderItems(page, items, sectionClass, overlayButton, shape) {
|
||||||
|
|
|
@ -148,8 +148,8 @@
|
||||||
|
|
||||||
dlg.classList.add('promptDialog');
|
dlg.classList.add('promptDialog');
|
||||||
|
|
||||||
html += '<div class="promptDialogContent" style="padding:1em;">';
|
html += '<div class="promptDialogContent" style="padding:1.5em;">';
|
||||||
html += '<h2>';
|
html += '<h2 style="margin-top:.5em;">';
|
||||||
html += (playerInfo.deviceName || playerInfo.name);
|
html += (playerInfo.deviceName || playerInfo.name);
|
||||||
html += '</h2>';
|
html += '</h2>';
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@
|
||||||
|
|
||||||
if (playerInfo.supportedCommands.indexOf('DisplayContent') != -1) {
|
if (playerInfo.supportedCommands.indexOf('DisplayContent') != -1) {
|
||||||
|
|
||||||
html += '<label class="checkboxContainer" style="margin-bottom:0;">';
|
html += '<label class="checkboxContainer">';
|
||||||
var checkedHtml = MediaController.enableDisplayMirroring() ? ' checked' : '';
|
var checkedHtml = MediaController.enableDisplayMirroring() ? ' checked' : '';
|
||||||
html += '<input type="checkbox" is="emby-checkbox" class="chkMirror"' + checkedHtml + '/>';
|
html += '<input type="checkbox" is="emby-checkbox" class="chkMirror"' + checkedHtml + '/>';
|
||||||
html += '<span>' + Globalize.translate('OptionEnableDisplayMirroring') + '</span>';
|
html += '<span>' + Globalize.translate('OptionEnableDisplayMirroring') + '</span>';
|
||||||
|
@ -166,15 +166,11 @@
|
||||||
|
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
html += '<div class="promptDialogButtons">';
|
html += '<div style="margin-top:1em;display:flex;justify-content: flex-end;">';
|
||||||
|
|
||||||
// On small layouts papepr dialog doesn't respond very well. this button isn't that important here anyway.
|
html += '<button is="emby-button" type="button" class="button-flat button-accent-flat btnRemoteControl promptDialogButton">' + Globalize.translate('ButtonRemoteControl') + '</button>';
|
||||||
if (screen.availWidth >= 600) {
|
html += '<button is="emby-button" type="button" class="button-flat button-accent-flat btnDisconnect promptDialogButton ">' + Globalize.translate('ButtonDisconnect') + '</button>';
|
||||||
html += '<button is="emby-button" type="button" class="btnRemoteControl promptDialogButton">' + Globalize.translate('ButtonRemoteControl') + '</button>';
|
html += '<button is="emby-button" type="button" class="button-flat button-accent-flat btnCancel promptDialogButton">' + Globalize.translate('ButtonCancel') + '</button>';
|
||||||
}
|
|
||||||
|
|
||||||
html += '<button is="emby-button" type="button" class="btnDisconnect promptDialogButton">' + Globalize.translate('ButtonDisconnect') + '</button>';
|
|
||||||
html += '<button is="emby-button" type="button" class="btnCancel promptDialogButton">' + Globalize.translate('ButtonCancel') + '</button>';
|
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<div id="wizardGuidePage" data-role="page" class="page standalonePage wizardPage" data-require="scripts/wizardlivetvguide,emby-button">
|
<div id="wizardGuidePage" data-role="page" class="page standalonePage wizardPage" data-require="scripts/wizardlivetvguide,emby-button,emby-select">
|
||||||
|
|
||||||
<div data-role="content">
|
<div data-role="content">
|
||||||
|
|
||||||
|
@ -12,15 +12,13 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div class="selectContainer">
|
||||||
<label for="selectType" class="selectLabel">${LabelDataProvider}</label>
|
<select is="emby-select" id="selectType" label="${LabelDataProvider}" required="required">
|
||||||
<select id="selectType" data-mini="true" required="required">
|
|
||||||
<option value="SchedulesDirect">Schedules Direct</option>
|
<option value="SchedulesDirect">Schedules Direct</option>
|
||||||
<option value="xmltv">Xml TV</option>
|
<option value="xmltv">Xml TV</option>
|
||||||
</select>
|
</select>
|
||||||
<div class="fieldDescription">${AdditionalLiveTvProvidersCanBeInstalledLater}</div>
|
<div class="fieldDescription">${AdditionalLiveTvProvidersCanBeInstalledLater}</div>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
|
||||||
<div class="providerTemplate">
|
<div class="providerTemplate">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<div id="wizardTunerPage" data-role="page" class="page standalonePage wizardPage" data-require="scripts/wizardlivetvtuner,emby-input,emby-button">
|
<div id="wizardTunerPage" data-role="page" class="page standalonePage wizardPage" data-require="scripts/wizardlivetvtuner,emby-input,emby-button,emby-select">
|
||||||
|
|
||||||
<div data-role="content">
|
<div data-role="content">
|
||||||
|
|
||||||
|
@ -13,14 +13,12 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div class="selectContainer">
|
||||||
<label for="selectTunerType" class="selectLabel">${LabelTunerType}</label>
|
<select is="emby-select" id="selectTunerType" label="${LabelTunerType}" required="required">
|
||||||
<select id="selectTunerType" data-mini="true" required="required">
|
|
||||||
<option value="hdhomerun">HDHomerun</option>
|
<option value="hdhomerun">HDHomerun</option>
|
||||||
</select>
|
</select>
|
||||||
<div class="fieldDescription">${AdditionalLiveTvProvidersCanBeInstalledLater}</div>
|
<div class="fieldDescription">${AdditionalLiveTvProvidersCanBeInstalledLater}</div>
|
||||||
</div>
|
</div>
|
||||||
<br />
|
|
||||||
<div class="inputContainer">
|
<div class="inputContainer">
|
||||||
<input is="emby-input" class="txtDevicePath" label="${LabelTunerIpAddress}" required="required" />
|
<input is="emby-input" class="txtDevicePath" label="${LabelTunerIpAddress}" required="required" />
|
||||||
<div class="fieldDescription">${HelpMoreTunersCanBeAdded}</div>
|
<div class="fieldDescription">${HelpMoreTunersCanBeAdded}</div>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<div id="wizardStartPage" data-role="page" class="page standalonePage wizardPage" data-require="scripts/wizardstartpage,emby-button">
|
<div id="wizardStartPage" data-role="page" class="page standalonePage wizardPage" data-require="scripts/wizardstartpage,emby-button,emby-select">
|
||||||
|
|
||||||
<div data-role="content">
|
<div data-role="content">
|
||||||
|
|
||||||
|
@ -15,9 +15,8 @@
|
||||||
<br style="clear:both;" />
|
<br style="clear:both;" />
|
||||||
<p>${ThisWizardWillGuideYou}</p>
|
<p>${ThisWizardWillGuideYou}</p>
|
||||||
<br />
|
<br />
|
||||||
<div>
|
<div class="selectContainer">
|
||||||
<label for="selectLocalizationLanguage" class="selectLabel">${LabelPreferredDisplayLanguage}</label>
|
<select is="emby-select" id="selectLocalizationLanguage" label="${LabelPreferredDisplayLanguage}"></select>
|
||||||
<select id="selectLocalizationLanguage" data-mini="true"></select>
|
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,12 @@
|
||||||
<input is="emby-input" type="text" id="txtUsername" label="${LabelYourFirstName}" required="required" />
|
<input is="emby-input" type="text" id="txtUsername" label="${LabelYourFirstName}" required="required" />
|
||||||
<div class="fieldDescription">${MoreUsersCanBeAddedLater}</div>
|
<div class="fieldDescription">${MoreUsersCanBeAddedLater}</div>
|
||||||
</div>
|
</div>
|
||||||
<br /> <h1 style="margin-bottom:.25em;">${HeaderOptionalLinkEmbyAccount}</h1>
|
<br />
|
||||||
<br /> <div class="inputContainer">
|
|
||||||
|
<h1 style="margin-bottom:.25em;">${HeaderOptionalLinkEmbyAccount}</h1>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div class="inputContainer">
|
||||||
<input is="emby-input" type="text" id="txtConnectUserName" label="${LabelConnectUserName}" />
|
<input is="emby-input" type="text" id="txtConnectUserName" label="${LabelConnectUserName}" />
|
||||||
<div class="fieldDescription">
|
<div class="fieldDescription">
|
||||||
<div>${LabelConnectUserNameHelp}</div>
|
<div>${LabelConnectUserNameHelp}</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue