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; white-space: nowrap;
width: 100%; width: 100%;
flex-shrink: 0; flex-shrink: 0;
display: flex;
} }
.tvProgramSectionHeader { .tvProgramSectionHeader {
@ -83,7 +84,7 @@
} }
.channelTimeslotHeader { .channelTimeslotHeader {
float: left; flex-shrink: 0;
} }
.timeslotHeaders { .timeslotHeaders {
@ -93,15 +94,14 @@
.programContainer { .programContainer {
white-space: nowrap; white-space: nowrap;
position: relative; position: relative;
} display: flex;
align-items: flex-start;
.programGridContainer {
margin-left: 12.2vw;
} }
.channelPrograms { .channelPrograms {
white-space: nowrap; white-space: nowrap;
position: relative; position: relative;
contain: strict;
} }
.timeslotHeadersInner { .timeslotHeadersInner {
@ -285,6 +285,12 @@
.channelPrograms, .channelHeaderCell { .channelPrograms, .channelHeaderCell {
height: 4em; height: 4em;
contain: strict;
}
.channelPrograms {
display: flex;
flex-direction: column;
} }
.channelPrograms-tv, .channelHeaderCell-tv { .channelPrograms-tv, .channelHeaderCell-tv {
@ -307,10 +313,6 @@
background-color: #444; background-color: #444;
} }
.channelList {
float: left;
}
.programGrid { .programGrid {
padding-bottom: 4px; padding-bottom: 4px;
} }
@ -403,8 +405,13 @@
} }
} }
.channelList {
display: flex;
flex-direction: column;
}
.channelList, .programGrid { .channelList, .programGrid {
height: auto !important; contain: layout style;
} }
.programCell, .channelHeaderCell, .btnSelectDate { .programCell, .channelHeaderCell, .btnSelectDate {

View file

@ -15,6 +15,7 @@
</div> </div>
<div class="smoothScrollY guideVerticalScroller programContainer guideScroller" style="flex-grow: 1;"> <div class="smoothScrollY guideVerticalScroller programContainer guideScroller" style="flex-grow: 1;">
<div class="channelList"></div> <div class="channelList"></div>
<div class="programGridContainer programGrid smoothScrollX guideScroller" style="white-space: nowrap;"> <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) { if (options.showProgramTimeColumn) {
html += '<div class="listItemBody listItemBody-nogrow listItemBody-rightborder"><div class="listItemBodyText">'; html += '<div class="listItemBody listItemBody-nogrow listItemBody-rightborder"><div class="listItemBodyText">';
html += datetime.getDisplayTime(datetime.parseISO8601Date(item.StartDate)); html += datetime.getDisplayTime(datetime.parseISO8601Date(item.StartDate));
html += ' - ';
html += datetime.getDisplayTime(datetime.parseISO8601Date(item.EndDate));
html += '</div></div>'; html += '</div></div>';
} }
@ -309,7 +307,8 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
var mediaInfoClass = 'secondary listItemMediaInfo listItemBodyText'; var mediaInfoClass = 'secondary listItemMediaInfo listItemBodyText';
html += '<div class="' + mediaInfoClass + '">' + mediaInfo.getPrimaryMediaInfoHtml(item, { html += '<div class="' + mediaInfoClass + '">' + mediaInfo.getPrimaryMediaInfoHtml(item, {
episodeTitle: false episodeTitle: false,
originalAirDate: false
}) + '</div>'; }) + '</div>';
} }

View file

@ -190,7 +190,7 @@ define(['datetime', 'globalize', 'embyRouter', 'itemHelper', 'material-icons', '
miscInfo.push(itemHelper.getDisplayName(item)); miscInfo.push(itemHelper.getDisplayName(item));
} }
else if (item.PremiereDate) { else if (item.PremiereDate && options.originalAirDate !== false) {
try { try {
date = datetime.parseISO8601Date(item.PremiereDate); 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) { 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 currentDialog;
var recordingUpdated = false;
var recordingDeleted = false; var recordingDeleted = false;
var currentItemId; var currentItemId;
var currentServerId; var currentServerId;
var currentResolve;
function deleteTimer(apiClient, timerId) { function deleteTimer(apiClient, timerId) {
@ -50,7 +50,6 @@
function closeDialog(isDeleted) { function closeDialog(isDeleted) {
recordingUpdated = true;
recordingDeleted = isDeleted; recordingDeleted = isDeleted;
dialogHelper.close(currentDialog); dialogHelper.close(currentDialog);
@ -63,10 +62,9 @@
var apiClient = connectionManager.getApiClient(currentServerId); var apiClient = connectionManager.getApiClient(currentServerId);
apiClient.getLiveTvTimer(currentItemId).then(function (item) { apiClient.getLiveTvTimer(currentItemId).then(function (item) {
item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60; item.PrePaddingSeconds = form.querySelector('#txtPrePaddingMinutes').value * 60;
item.PostPaddingSeconds = form.querySelector('#txtPostPaddingMinutes').value * 60; item.PostPaddingSeconds = form.querySelector('#txtPostPaddingMinutes').value * 60;
apiClient.updateLiveTvTimer(item); apiClient.updateLiveTvTimer(item).then(currentResolve);
}); });
e.preventDefault(); e.preventDefault();
@ -110,11 +108,11 @@
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
recordingUpdated = false;
recordingDeleted = false; recordingDeleted = false;
currentServerId = serverId; currentServerId = serverId;
loading.show(); loading.show();
options = options || {}; options = options || {};
currentResolve = resolve;
require(['text!./recordingeditor.template.html'], function (template) { require(['text!./recordingeditor.template.html'], function (template) {
@ -150,22 +148,20 @@
currentDialog = dlg; currentDialog = dlg;
dlg.addEventListener('close', function () { dlg.addEventListener('closing', function () {
if (!recordingDeleted) { if (!recordingDeleted) {
this.querySelector('.btnSubmit').click(); dlg.querySelector('.btnSubmit').click();
} }
}); });
dlg.addEventListener('close', function () { dlg.addEventListener('close', function () {
if (recordingUpdated) { if (recordingDeleted) {
resolve({ resolve({
updated: true, updated: true,
deleted: recordingDeleted deleted: true
}); });
} else {
reject();
} }
}); });

View file

@ -832,11 +832,13 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'scrollStyles'], func
} }
function onFrameClick(e) { function onFrameClick(e) {
if (e.which == 1) {
var focusableParent = focusManager.focusableParent(e.target); var focusableParent = focusManager.focusableParent(e.target);
if (focusableParent != document.activeElement) { if (focusableParent != document.activeElement) {
focusableParent.focus(); focusableParent.focus();
} }
} }
}
/** /**
* Initialize. * Initialize.

View file

@ -13,6 +13,7 @@
$('#chkSaveMetadataHidden', page).checked(config.SaveMetadataHidden); $('#chkSaveMetadataHidden', page).checked(config.SaveMetadataHidden);
$('#txtMetadataPath', page).val(config.MetadataPath || ''); $('#txtMetadataPath', page).val(config.MetadataPath || '');
$('#txtMetadataNetworkPath', page).val(config.MetadataNetworkPath || '');
$('#chkPeopleActors', page).checked(config.PeopleMetadataOptions.DownloadActorMetadata); $('#chkPeopleActors', page).checked(config.PeopleMetadataOptions.DownloadActorMetadata);
$('#chkPeopleComposers', page).checked(config.PeopleMetadataOptions.DownloadComposerMetadata); $('#chkPeopleComposers', page).checked(config.PeopleMetadataOptions.DownloadComposerMetadata);
@ -70,6 +71,7 @@
config.EnableTmdbUpdates = $('#chkEnableTmdbUpdates', form).checked(); config.EnableTmdbUpdates = $('#chkEnableTmdbUpdates', form).checked();
config.EnableFanArtUpdates = $('#chkEnableFanartUpdates', form).checked(); config.EnableFanArtUpdates = $('#chkEnableFanartUpdates', form).checked();
config.MetadataPath = $('#txtMetadataPath', form).val(); config.MetadataPath = $('#txtMetadataPath', form).val();
config.MetadataNetworkPath = $('#txtMetadataNetworkPath', form).val();
config.FanartApiKey = $('#txtFanartApiKey', form).val(); config.FanartApiKey = $('#txtFanartApiKey', form).val();
config.PeopleMetadataOptions.DownloadActorMetadata = $('#chkPeopleActors', form).checked(); config.PeopleMetadataOptions.DownloadActorMetadata = $('#chkPeopleActors', form).checked();
@ -122,16 +124,21 @@
picker.show({ picker.show({
callback: function (path) { path: $('#txtMetadataPath', view).val(),
networkPath: $('#txtMetadataNetworkPath', view).val(),
callback: function (path, networkPath) {
if (path) { if (path) {
$('#txtMetadataPath', view).val(path); $('#txtMetadataPath', view).val(path);
$('#txtMetadataNetworkPath', view).val(networkPath);
} }
picker.close(); picker.close();
}, },
header: Globalize.translate('HeaderSelectMetadataPath'), 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 { .dialog.background-theme-b {
background: rgba(28,28,28,.88); background: rgba(28,28,28,.84);
-webkit-backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px);
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> <button type="button" is="paper-icon-button-light" id="btnSelectMetadataPath" title="${ButtonSelectDirectory}"><i class="md-icon">search</i></button>
</div> </div>
<div class="fieldDescription">${LabelMetadataPathHelp}</div> <div class="fieldDescription">${LabelMetadataPathHelp}</div>
<input type="hidden" id="txtMetadataNetworkPath" />
</div> </div>
<div class="checkboxContainer checkboxContainer-withDescription"> <div class="checkboxContainer checkboxContainer-withDescription">
<label> <label>

View file

@ -195,8 +195,8 @@
} }
// For now don't do this in edge because we lose some native audio support // For now don't do this in edge because we lose some native audio support
if (browser.edge) { if (browser.edge && browser.mobile) {
//return false; return false;
} }
// hls.js is only in beta. needs more testing. // 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 // 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 // This will start the transcoding process before actually feeding the video url into the player
// Edit: Also seeing stalls from hls.js // 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'); var hlsPlaylistUrl = streamInfo.url.replace('master.m3u8', 'live.m3u8');