1
0
Fork 0
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:
Luke Pulverenti 2016-09-27 13:51:01 -04:00
parent 2efcbc740d
commit 3da30e8414
12 changed files with 48 additions and 35 deletions

View file

@ -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 {

View file

@ -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;">

View file

@ -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>';
}

View file

@ -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);

View file

@ -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();
}
});

View file

@ -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.

View file

@ -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
});
});

View file

@ -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);
}

View file

@ -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>

View file

@ -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.

View file

@ -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');