diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js
index 342d4771f8..1f83c94ad5 100644
--- a/dashboard-ui/scripts/itemdetailpage.js
+++ b/dashboard-ui/scripts/itemdetailpage.js
@@ -46,7 +46,7 @@
Dashboard.getCurrentUser().done(function (user) {
renderImage(page, item, user);
-
+
setInitialCollapsibleState(page, item, context, user);
renderDetails(page, item, context);
LibraryBrowser.renderDetailPageBackdrop(page, item);
@@ -138,9 +138,9 @@
Dashboard.hideLoadingMsg();
}
-
+
function renderImage(page, item, user) {
-
+
var imageHref = user.Configuration.IsAdministrator ? "edititemimages.html?id=" + item.Id : "";
$('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item, imageHref));
@@ -655,7 +655,7 @@
}
if (item.Studios.length) {
- html += ' on ' + item.Studios[0].Name + '';
+ html += ' on ' + item.Studios[0].Name + '';
}
if (html) {
@@ -890,7 +890,7 @@
}
function renderUserDataIcons(page, item) {
-
+
$('.userDataIcons', page).html(LibraryBrowser.getUserDataIconsHtml(item));
}
@@ -1193,7 +1193,7 @@
if (stream.IsAnamorphic != null) {
attributes.push(createAttribute("Anamorphic", (stream.IsAnamorphic ? 'Yes' : 'No')));
}
-
+
attributes.push(createAttribute("Interlaced", (stream.IsInterlaced ? 'Yes' : 'No')));
}
diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js
index c9e84c4bdc..9d067222a7 100644
--- a/dashboard-ui/scripts/librarybrowser.js
+++ b/dashboard-ui/scripts/librarybrowser.js
@@ -1781,7 +1781,7 @@
html += ' / ';
}
- html += '' + item.Studios[i].Name + '';
+ html += '' + item.Studios[i].Name + '';
}
elem.show().html(html).trigger('create');
diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js
index 92aa48ed78..db6f255abe 100644
--- a/dashboard-ui/scripts/mediaplayer-video.js
+++ b/dashboard-ui/scripts/mediaplayer-video.js
@@ -1007,36 +1007,17 @@
EnableAutoStreamCopy: false
}));
- if (isStatic) webmVideoUrl += seekParam;
+ var hlsVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/master.m3u8', $.extend({}, baseParams, {
+ maxWidth: m3U8Quality.maxWidth,
+ videoBitrate: m3U8Quality.videoBitrate,
+ audioBitrate: m3U8Quality.audioBitrate,
+ VideoCodec: m3U8Quality.videoCodec,
+ AudioCodec: m3U8Quality.audioCodec,
+ profile: 'baseline',
+ level: '3',
+ StartTimeTicks: 0
- var hlsVideoUrl;
-
- if (item.RunTimeTicks) {
- hlsVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/master.m3u8', $.extend({}, baseParams, {
- timeStampOffsetMs: 0,
- maxWidth: m3U8Quality.maxWidth,
- videoBitrate: m3U8Quality.videoBitrate,
- audioBitrate: m3U8Quality.audioBitrate,
- VideoCodec: m3U8Quality.videoCodec,
- AudioCodec: m3U8Quality.audioCodec,
- profile: 'baseline',
- level: '3',
- StartTimeTicks: 0
-
- })) + seekParam;
-
- } else {
- hlsVideoUrl = ApiClient.getUrl('Videos/' + item.Id + '/stream.m3u8', $.extend({}, baseParams, {
- timeStampOffsetMs: 0,
- maxWidth: m3U8Quality.maxWidth,
- videoBitrate: m3U8Quality.videoBitrate,
- audioBitrate: m3U8Quality.audioBitrate,
- VideoCodec: m3U8Quality.videoCodec,
- AudioCodec: m3U8Quality.audioCodec,
- profile: 'baseline',
- level: '3'
- })) + seekParam;
- }
+ })) + seekParam;
//======================================================================================>
@@ -1199,9 +1180,7 @@
}).on("error.mediaplayerevent", function () {
- self.clearPauseStop();
-
- self.resetEnhancements();
+ self.stop();
var errorCode = this.error ? this.error.code : '';
console.log('Html5 Video error code: ' + errorCode);
@@ -1212,11 +1191,16 @@
errorMsg += " Please ensure there is an open tuner availalble.";
}
+ if (errorCode) {
+ errorMsg += " Error code: " + errorCode;
+ }
+
Dashboard.alert({
title: 'Video Error',
message: errorMsg
});
+
}).on("click.mediaplayerevent", function (e) {
if (this.paused) {
diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js
index 9e4b1b6b6f..d4d87d8c27 100644
--- a/dashboard-ui/scripts/mediaplayer.js
+++ b/dashboard-ui/scripts/mediaplayer.js
@@ -20,7 +20,7 @@
self.isLocalPlayer = true;
self.isDefaultPlayer = true;
-
+
self.name = 'Html5 Player';
self.getTargets = function () {
@@ -47,7 +47,7 @@
var playerTime = Math.floor(10000000 * (mediaElement || self.currentMediaElement).currentTime);
//if (!self.isCopyingTimestamps) {
- playerTime += self.startTimeTicksOffset;
+ playerTime += self.startTimeTicksOffset;
//}
return playerTime;
@@ -487,7 +487,7 @@
self.currentItem = item;
self.currentMediaSource = getOptimalMediaSource(item.MediaType, item.MediaSources);
-
+
mediaElement = playAudio(item, self.currentMediaSource, startPosition);
self.currentDurationTicks = self.currentMediaSource.RunTimeTicks;
@@ -879,26 +879,32 @@
var elem = self.currentMediaElement;
- elem.pause();
+ if (elem) {
- var isVideo = self.currentItem.MediaType == "Video";
+ elem.pause();
- $(elem).off("ended.playnext").one("ended", function () {
+ $(elem).off("ended.playnext").one("ended", function () {
- $(this).off();
+ $(this).off();
- if (this.tagName.toLowerCase() != 'audio') {
- $(this).remove();
- }
+ if (this.tagName.toLowerCase() != 'audio') {
+ $(this).remove();
+ }
- elem.src = "";
+ elem.src = "";
+ self.currentMediaElement = null;
+ self.currentItem = null;
+ self.currentMediaSource = null;
+
+ }).trigger("ended");
+
+ } else {
self.currentMediaElement = null;
self.currentItem = null;
self.currentMediaSource = null;
+ }
- }).trigger("ended");
-
- if (isVideo) {
+ if (self.currentItem && self.currentItem.MediaType == "Video") {
if (self.isFullScreen()) {
self.exitFullScreen();
}
diff --git a/dashboard-ui/scripts/reports.js b/dashboard-ui/scripts/reports.js
index 7f1e359c6a..1a2274835e 100644
--- a/dashboard-ui/scripts/reports.js
+++ b/dashboard-ui/scripts/reports.js
@@ -27,6 +27,7 @@
{},
{ name: 'Series', sortField: 'SeriesSortName,SortName' },
{ name: 'Season', sortField: 'SortName' },
+ { name: 'Season Number', sortField: 'IndexNumber' },
{ name: 'Date Added', sortField: 'DateCreated,SortName' }
];
}
@@ -260,6 +261,7 @@
html += item.ParentIndexNumber == null ? '' : item.ParentIndexNumber;
break;
}
+ case 'Season Number':
case 'Track':
{
html += item.IndexNumber == null ? '' : item.IndexNumber;