mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update closing of live streams
This commit is contained in:
parent
2efcbc740d
commit
3da30e8414
12 changed files with 48 additions and 35 deletions
|
@ -8,6 +8,7 @@
|
|||
white-space: nowrap;
|
||||
width: 100%;
|
||||
flex-shrink: 0;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.tvProgramSectionHeader {
|
||||
|
@ -83,7 +84,7 @@
|
|||
}
|
||||
|
||||
.channelTimeslotHeader {
|
||||
float: left;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.timeslotHeaders {
|
||||
|
@ -93,15 +94,14 @@
|
|||
.programContainer {
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.programGridContainer {
|
||||
margin-left: 12.2vw;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.channelPrograms {
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
contain: strict;
|
||||
}
|
||||
|
||||
.timeslotHeadersInner {
|
||||
|
@ -285,6 +285,12 @@
|
|||
|
||||
.channelPrograms, .channelHeaderCell {
|
||||
height: 4em;
|
||||
contain: strict;
|
||||
}
|
||||
|
||||
.channelPrograms {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.channelPrograms-tv, .channelHeaderCell-tv {
|
||||
|
@ -307,10 +313,6 @@
|
|||
background-color: #444;
|
||||
}
|
||||
|
||||
.channelList {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.programGrid {
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
@ -403,8 +405,13 @@
|
|||
}
|
||||
}
|
||||
|
||||
.channelList {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.channelList, .programGrid {
|
||||
height: auto !important;
|
||||
contain: layout style;
|
||||
}
|
||||
|
||||
.programCell, .channelHeaderCell, .btnSelectDate {
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
</div>
|
||||
|
||||
<div class="smoothScrollY guideVerticalScroller programContainer guideScroller" style="flex-grow: 1;">
|
||||
|
||||
<div class="channelList"></div>
|
||||
|
||||
<div class="programGridContainer programGrid smoothScrollX guideScroller" style="white-space: nowrap;">
|
||||
|
|
|
@ -245,8 +245,6 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
|
|||
if (options.showProgramTimeColumn) {
|
||||
html += '<div class="listItemBody listItemBody-nogrow listItemBody-rightborder"><div class="listItemBodyText">';
|
||||
html += datetime.getDisplayTime(datetime.parseISO8601Date(item.StartDate));
|
||||
html += ' - ';
|
||||
html += datetime.getDisplayTime(datetime.parseISO8601Date(item.EndDate));
|
||||
html += '</div></div>';
|
||||
}
|
||||
|
||||
|
@ -309,7 +307,8 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
|
|||
var mediaInfoClass = 'secondary listItemMediaInfo listItemBodyText';
|
||||
|
||||
html += '<div class="' + mediaInfoClass + '">' + mediaInfo.getPrimaryMediaInfoHtml(item, {
|
||||
episodeTitle: false
|
||||
episodeTitle: false,
|
||||
originalAirDate: false
|
||||
}) + '</div>';
|
||||
}
|
||||
|
||||
|
|
|
@ -190,7 +190,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
|
|||
miscInfo.push(itemHelper.getDisplayName(item));
|
||||
}
|
||||
|
||||
else if (item.PremiereDate) {
|
||||
else if (item.PremiereDate && options.originalAirDate !== false) {
|
||||
|
||||
try {
|
||||
date = datetime.parseISO8601Date(item.PremiereDate);
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
define(['dialogHelper', 'globalize', 'layoutManager', 'mediaInfo', 'apphost', 'connectionManager', 'require', 'loading', 'scrollHelper', 'imageLoader', 'scrollStyles', 'emby-button', 'emby-collapse', 'emby-input', 'paper-icon-button-light', 'css!./../formdialog', 'css!./recordingcreator', 'material-icons'], function (dialogHelper, globalize, layoutManager, mediaInfo, appHost, connectionManager, require, loading, scrollHelper, imageLoader) {
|
||||
|
||||
var currentDialog;
|
||||
var recordingUpdated = false;
|
||||
var recordingDeleted = false;
|
||||
var currentItemId;
|
||||
var currentServerId;
|
||||
var currentResolve;
|
||||
|
||||
function deleteTimer(apiClient, timerId) {
|
||||
|
||||
|
@ -50,7 +50,6 @@
|
|||
|
||||
function closeDialog(isDeleted) {
|
||||
|
||||
recordingUpdated = true;
|
||||
recordingDeleted = isDeleted;
|
||||
|
||||
dialogHelper.close(currentDialog);
|
||||
|
@ -63,10 +62,9 @@
|
|||
var apiClient = connectionManager.getApiClient(currentServerId);
|
||||
|
||||
apiClient.getLiveTvTimer(currentItemId).then(function (item) {
|
||||
|
||||
item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60;
|
||||
item.PostPaddingSeconds = form.querySelector('#txtPostPaddingMinutes').value * 60;
|
||||
apiClient.updateLiveTvTimer(item);
|
||||
apiClient.updateLiveTvTimer(item).then(currentResolve);
|
||||
});
|
||||
|
||||
e.preventDefault();
|
||||
|
@ -110,11 +108,11 @@
|
|||
|
||||
return new Promise(function (resolve, reject) {
|
||||
|
||||
recordingUpdated = false;
|
||||
recordingDeleted = false;
|
||||
currentServerId = serverId;
|
||||
loading.show();
|
||||
options = options || {};
|
||||
currentResolve = resolve;
|
||||
|
||||
require(['text!./recordingeditor.template.html'], function (template) {
|
||||
|
||||
|
@ -150,22 +148,20 @@
|
|||
|
||||
currentDialog = dlg;
|
||||
|
||||
dlg.addEventListener('close', function () {
|
||||
dlg.addEventListener('closing', function () {
|
||||
|
||||
if (!recordingDeleted) {
|
||||
this.querySelector('.btnSubmit').click();
|
||||
dlg.querySelector('.btnSubmit').click();
|
||||
}
|
||||
});
|
||||
|
||||
dlg.addEventListener('close', function () {
|
||||
|
||||
if (recordingUpdated) {
|
||||
if (recordingDeleted) {
|
||||
resolve({
|
||||
updated: true,
|
||||
deleted: recordingDeleted
|
||||
deleted: true
|
||||
});
|
||||
} else {
|
||||
reject();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -832,11 +832,13 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'scrollStyles'], func
|
|||
}
|
||||
|
||||
function onFrameClick(e) {
|
||||
if (e.which == 1) {
|
||||
var focusableParent = focusManager.focusableParent(e.target);
|
||||
if (focusableParent != document.activeElement) {
|
||||
focusableParent.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize.
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
$('#chkSaveMetadataHidden', page).checked(config.SaveMetadataHidden);
|
||||
|
||||
$('#txtMetadataPath', page).val(config.MetadataPath || '');
|
||||
$('#txtMetadataNetworkPath', page).val(config.MetadataNetworkPath || '');
|
||||
|
||||
$('#chkPeopleActors', page).checked(config.PeopleMetadataOptions.DownloadActorMetadata);
|
||||
$('#chkPeopleComposers', page).checked(config.PeopleMetadataOptions.DownloadComposerMetadata);
|
||||
|
@ -70,6 +71,7 @@
|
|||
config.EnableTmdbUpdates = $('#chkEnableTmdbUpdates', form).checked();
|
||||
config.EnableFanArtUpdates = $('#chkEnableFanartUpdates', form).checked();
|
||||
config.MetadataPath = $('#txtMetadataPath', form).val();
|
||||
config.MetadataNetworkPath = $('#txtMetadataNetworkPath', form).val();
|
||||
config.FanartApiKey = $('#txtFanartApiKey', form).val();
|
||||
|
||||
config.PeopleMetadataOptions.DownloadActorMetadata = $('#chkPeopleActors', form).checked();
|
||||
|
@ -122,16 +124,21 @@
|
|||
|
||||
picker.show({
|
||||
|
||||
callback: function (path) {
|
||||
path: $('#txtMetadataPath', view).val(),
|
||||
networkPath: $('#txtMetadataNetworkPath', view).val(),
|
||||
callback: function (path, networkPath) {
|
||||
if (path) {
|
||||
$('#txtMetadataPath', view).val(path);
|
||||
$('#txtMetadataNetworkPath', view).val(networkPath);
|
||||
}
|
||||
picker.close();
|
||||
},
|
||||
|
||||
header: Globalize.translate('HeaderSelectMetadataPath'),
|
||||
|
||||
instruction: Globalize.translate('HeaderSelectMetadataPathHelp')
|
||||
instruction: Globalize.translate('HeaderSelectMetadataPathHelp'),
|
||||
|
||||
enableNetworkSharePath: true
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ h1, h1 a {
|
|||
}
|
||||
|
||||
.dialog.background-theme-b {
|
||||
background: rgba(28,28,28,.88);
|
||||
background: rgba(28,28,28,.84);
|
||||
-webkit-backdrop-filter: blur(5px);
|
||||
backdrop-filter: blur(5px);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<button type="button" is="paper-icon-button-light" id="btnSelectMetadataPath" title="${ButtonSelectDirectory}"><i class="md-icon">search</i></button>
|
||||
</div>
|
||||
<div class="fieldDescription">${LabelMetadataPathHelp}</div>
|
||||
<input type="hidden" id="txtMetadataNetworkPath" />
|
||||
</div>
|
||||
<div class="checkboxContainer checkboxContainer-withDescription">
|
||||
<label>
|
||||
|
|
|
@ -195,8 +195,8 @@
|
|||
}
|
||||
|
||||
// For now don't do this in edge because we lose some native audio support
|
||||
if (browser.edge) {
|
||||
//return false;
|
||||
if (browser.edge && browser.mobile) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// hls.js is only in beta. needs more testing.
|
||||
|
|
|
@ -1008,7 +1008,7 @@
|
|||
// Huge hack alert. Safari doesn't seem to like if the segments aren't available right away when playback starts
|
||||
// This will start the transcoding process before actually feeding the video url into the player
|
||||
// Edit: Also seeing stalls from hls.js
|
||||
if (!mediaSource.RunTimeTicks && isHls) {
|
||||
if (!mediaSource.RunTimeTicks && isHls && (!browser.edge || !browser.mobile)) {
|
||||
|
||||
var hlsPlaylistUrl = streamInfo.url.replace('master.m3u8', 'live.m3u8');
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue