From 3d1e5130fee7967477374dec51525445af88667b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 20 Jan 2016 20:05:14 -0500 Subject: [PATCH 01/17] update image loader --- .../emby-apiclient/.bower.json | 8 +- .../emby-apiclient/connectionmanager.js | 74 ++++++++++ .../emby-webcomponents/.bower.json | 8 +- ...sicimageloader.js => basicimagefetcher.js} | 0 .../emby-webcomponents/images/imagehelper.js | 46 ++++++- ...ageloader.js => persistentimagefetcher.js} | 0 dashboard-ui/scripts/librarymenu.js | 9 +- dashboard-ui/scripts/site.js | 17 ++- .../thirdparty/jquery.unveil-custom.js | 130 ------------------ 9 files changed, 140 insertions(+), 152 deletions(-) rename dashboard-ui/bower_components/emby-webcomponents/images/{basicimageloader.js => basicimagefetcher.js} (100%) rename dashboard-ui/bower_components/emby-webcomponents/images/{persistentimageloader.js => persistentimagefetcher.js} (100%) delete mode 100644 dashboard-ui/thirdparty/jquery.unveil-custom.js diff --git a/dashboard-ui/bower_components/emby-apiclient/.bower.json b/dashboard-ui/bower_components/emby-apiclient/.bower.json index 95156fd72f..9a56472bf8 100644 --- a/dashboard-ui/bower_components/emby-apiclient/.bower.json +++ b/dashboard-ui/bower_components/emby-apiclient/.bower.json @@ -16,12 +16,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.0.27", - "_release": "1.0.27", + "version": "1.0.30", + "_release": "1.0.30", "_resolution": { "type": "version", - "tag": "1.0.27", - "commit": "c8758fe411230a36326a0bd72e8d4d5971f506f7" + "tag": "1.0.30", + "commit": "9f144d506da6c01cd99f2421953a9f2c5c96e295" }, "_source": "git://github.com/MediaBrowser/Emby.ApiClient.Javascript.git", "_target": "~1.0.3", diff --git a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js index a9ee9c627b..0ae7ad43ba 100644 --- a/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js +++ b/dashboard-ui/bower_components/emby-apiclient/connectionmanager.js @@ -488,6 +488,10 @@ }); } + function getConnectUrl(handler) { + return 'https://connect.emby.media/service/' + handler; + } + function getConnectUser(userId, accessToken) { if (!userId) { @@ -1529,6 +1533,76 @@ } } + function addAppInfoToConnectRequest(request) { + request.headers = request.headers || {}; + request.headers['X-Application'] = appName + '/' + appVersion; + } + + self.createPin = function () { + + var request = { + type: 'POST', + url: getConnectUrl('pin'), + data: { + deviceId: deviceId + }, + dataType: 'json' + }; + + addAppInfoToConnectRequest(request); + + return ajax(request); + }; + + self.getPinStatus = function (pinInfo) { + + var queryString = { + deviceId: pinInfo.DeviceId, + pin: pinInfo.Pin + }; + + var request = { + type: 'GET', + url: getConnectUrl('pin') + '?' + paramsToString(queryString), + dataType: 'json' + }; + + addAppInfoToConnectRequest(request); + + return ajax(request); + + }; + + function exchangePin(pinInfo) { + + var request = { + type: 'POST', + url: getConnectUrl('pin/authenticate'), + data: { + deviceId: pinInfo.DeviceId, + pin: pinInfo.Pin + }, + dataType: 'json' + }; + + addAppInfoToConnectRequest(request); + + return ajax(request); + } + + self.exchangePin = function (pinInfo) { + + return exchangePin(pinInfo).then(function (result) { + + var credentials = credentialProvider.credentials(); + credentials.ConnectAccessToken = result.AccessToken; + credentials.ConnectUserId = result.UserId; + credentialProvider.credentials(credentials); + + return ensureConnectUser(credentials); + }); + }; + return self; }; diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index a66c8debd2..3d86035ba2 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/.bower.json +++ b/dashboard-ui/bower_components/emby-webcomponents/.bower.json @@ -15,12 +15,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.0.21", - "_release": "1.0.21", + "version": "1.0.23", + "_release": "1.0.23", "_resolution": { "type": "version", - "tag": "1.0.21", - "commit": "dd73237b9d554d45a664e820042804c6d129d280" + "tag": "1.0.23", + "commit": "1e7c56cf54a657d72d35d36f37937231942a2685" }, "_source": "git://github.com/MediaBrowser/emby-webcomponents.git", "_target": "~1.0.0", diff --git a/dashboard-ui/bower_components/emby-webcomponents/images/basicimageloader.js b/dashboard-ui/bower_components/emby-webcomponents/images/basicimagefetcher.js similarity index 100% rename from dashboard-ui/bower_components/emby-webcomponents/images/basicimageloader.js rename to dashboard-ui/bower_components/emby-webcomponents/images/basicimagefetcher.js diff --git a/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js b/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js index 8548fe58a6..7d80813e0b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js @@ -1,4 +1,4 @@ -define(['visibleinviewport', 'imageloader'], function (visibleinviewport, imageLoader) { +define(['visibleinviewport', 'imageFetcher'], function (visibleinviewport, imageFetcher) { var thresholdX = screen.availWidth; var thresholdY = screen.availHeight; @@ -9,14 +9,33 @@ define(['visibleinviewport', 'imageloader'], function (visibleinviewport, imageL return visibleinviewport(elem, true, thresholdX, thresholdY); } + var self = {}; + function fillImage(elem) { var source = elem.getAttribute('data-src'); if (source) { - imageLoader.loadImage(elem, source); + if (self.enableFade) { + imageFetcher.loadImage(elem, source).then(fadeIn); + } else { + imageFetcher.loadImage(elem, source); + } elem.setAttribute("data-src", ''); } } + function fadeIn(elem) { + + if (elem.classList.contains('noFade')) { + return; + } + + var keyframes = [ + { opacity: '0', offset: 0 }, + { opacity: '1', offset: 1 }]; + var timing = { duration: 300, iterations: 1 }; + elem.animate(keyframes, timing); + } + function cancelAll(tokens) { for (var i = 0, length = tokens.length; i < length; i++) { @@ -167,9 +186,24 @@ define(['visibleinviewport', 'imageloader'], function (visibleinviewport, imageL return result; } - return { - lazyChildren: lazyChildren, - getPrimaryImageAspectRatio: getPrimaryImageAspectRatio - }; + function fillImages(elems) { + for (var i = 0, length = elems.length; i < length; i++) { + var elem = elems[0]; + fillImage(elem); + } + } + + function lazyImage(elem, url) { + + elem.setAttribute('data-src', url); + fillImage(elem); + } + + self.fillImages = fillImages; + self.lazyImage = lazyImage; + self.lazyChildren = lazyChildren; + self.getPrimaryImageAspectRatio = getPrimaryImageAspectRatio; + + return self; }); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/images/persistentimageloader.js b/dashboard-ui/bower_components/emby-webcomponents/images/persistentimagefetcher.js similarity index 100% rename from dashboard-ui/bower_components/emby-webcomponents/images/persistentimageloader.js rename to dashboard-ui/bower_components/emby-webcomponents/images/persistentimagefetcher.js diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index 5ce1658ee5..445e87ae8e 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -50,7 +50,9 @@ document.body.appendChild(viewMenuBar); - ImageLoader.lazyChildren(document.querySelector('.viewMenuBar')); + require(['imageLoader'], function (imageLoader) { + imageLoader.lazyChildren(document.querySelector('.viewMenuBar')); + }); document.dispatchEvent(new CustomEvent("headercreated", {})); bindMenuEvents(); @@ -323,7 +325,10 @@ var userHeader = drawer.querySelector('.userheader'); userHeader.innerHTML = html; - ImageLoader.fillImages(userHeader.getElementsByClassName('lazy')); + + require(['imageLoader'], function (imageLoader) { + imageLoader.fillImages(userHeader.getElementsByClassName('lazy')); + }); } function refreshLibraryInfoInDrawer(user, drawer) { diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index bd9f4fe742..7ad3e003e8 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -1855,15 +1855,16 @@ var AppInfo = {}; browser: embyWebComponentsBowerPath + "/browser", qualityoptions: embyWebComponentsBowerPath + "/qualityoptions", connectservice: apiClientBowerPath + '/connectservice', - hammer: bowerPath + "/hammerjs/hammer.min" + hammer: bowerPath + "/hammerjs/hammer.min", + imageLoader: embyWebComponentsBowerPath + "/images/imagehelper" }; if (navigator.webkitPersistentStorage) { - paths.imageloader = embyWebComponentsBowerPath + "/images/persistentimageloader"; + paths.imageFetcher = embyWebComponentsBowerPath + "/images/persistentimagefetcher"; } else if (Dashboard.isRunningInCordova()) { - paths.imageloader = 'cordova/imagestore'; + paths.imageFetcher = 'cordova/imagestore'; } else { - paths.imageloader = embyWebComponentsBowerPath + "/images/basicimageloader"; + paths.imageFetcher = embyWebComponentsBowerPath + "/images/basicimagefetcher"; } paths.hlsjs = bowerPath + "/hls.js/dist/hls.min"; @@ -2152,7 +2153,6 @@ var AppInfo = {}; var promises = []; deps = []; deps.push('scripts/mediaplayer'); - deps.push('thirdparty/jquery.unveil-custom.js'); deps.push('emby-icons'); deps.push('paper-icon-button'); deps.push('paper-button'); @@ -2219,6 +2219,8 @@ var AppInfo = {}; var deps = []; + deps.push('imageLoader'); + if (!(AppInfo.isNativeApp && browserInfo.android)) { document.documentElement.classList.add('minimumSizeTabs'); } @@ -2263,7 +2265,10 @@ var AppInfo = {}; deps.push('css!css/card.css'); - require(deps, function () { + require(deps, function (imageLoader) { + + imageLoader.enableFade = browserInfo.animate && !browserInfo.mobile; + window.ImageLoader = imageLoader; $.mobile.filterHtml = Dashboard.filterHtml; diff --git a/dashboard-ui/thirdparty/jquery.unveil-custom.js b/dashboard-ui/thirdparty/jquery.unveil-custom.js deleted file mode 100644 index 361f61fe41..0000000000 --- a/dashboard-ui/thirdparty/jquery.unveil-custom.js +++ /dev/null @@ -1,130 +0,0 @@ -define(['visibleinviewport', 'imageloader'], function (visibleInViewport, imageLoader) { - - var wheelEvent = (document.implementation.hasFeature('Event.wheel', '3.0') ? 'wheel' : 'mousewheel'); - var thresholdX = screen.availWidth; - var thresholdY = screen.availHeight; - - function isVisible(elem) { - return visibleInViewport(elem, true, thresholdX, thresholdY); - } - - function fillImage(elem) { - var source = elem.getAttribute('data-src'); - if (source) { - imageLoader.loadImage(elem, source).then(fadeIn); - elem.setAttribute("data-src", ''); - } - } - - function fadeIn(elem) { - - if (!browserInfo.animate || browserInfo.mobile) { - return; - } - if (elem.classList.contains('noFade')) { - return; - } - - var keyframes = [ - { opacity: '0', offset: 0 }, - { opacity: '1', offset: 1 }]; - var timing = { duration: 300, iterations: 1 }; - elem.animate(keyframes, timing); - } - - function cancelAll(tokens) { - for (var i = 0, length = tokens.length; i < length; i++) { - - tokens[i] = true; - } - } - - function unveilElements(images) { - - if (!images.length) { - return; - } - - var cancellationTokens = []; - function unveilInternal(tokenIndex) { - - var remaining = []; - var anyFound = false; - var out = false; - - // TODO: This out construct assumes left to right, top to bottom - - for (var i = 0, length = images.length; i < length; i++) { - - if (cancellationTokens[tokenIndex]) { - return; - } - var img = images[i]; - if (!out && isVisible(img)) { - anyFound = true; - fillImage(img); - } else { - - if (anyFound) { - out = true; - } - remaining.push(img); - } - } - - images = remaining; - - if (!images.length) { - document.removeEventListener('focus', unveil, true); - document.removeEventListener('scroll', unveil, true); - document.removeEventListener(wheelEvent, unveil, true); - window.removeEventListener('resize', unveil, true); - } - } - - function unveil() { - - cancelAll(cancellationTokens); - - var index = cancellationTokens.length; - cancellationTokens.length++; - - setTimeout(function () { - unveilInternal(index); - }, 1); - } - - document.addEventListener('scroll', unveil, true); - document.addEventListener('focus', unveil, true); - document.addEventListener(wheelEvent, unveil, true); - window.addEventListener('resize', unveil, true); - - unveil(); - } - - function fillImages(elems) { - - for (var i = 0, length = elems.length; i < length; i++) { - var elem = elems[0]; - fillImage(elem); - } - } - - function lazyChildren(elem) { - - unveilElements(elem.getElementsByClassName('lazy'), elem); - } - - function lazyImage(elem, url) { - - elem.setAttribute('data-src', url); - fillImages([elem]); - } - - window.ImageLoader = { - fillImages: fillImages, - lazyImage: lazyImage, - lazyChildren: lazyChildren - }; - -}); \ No newline at end of file From 4166f5fb6471267a2cfc008f3b7052b8d7eeaa46 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 21 Jan 2016 14:45:52 -0500 Subject: [PATCH 02/17] trim logging --- dashboard-ui/scripts/site.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 7ad3e003e8..d1e33a32a2 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -2015,7 +2015,8 @@ var AppInfo = {}; if (Dashboard.isRunningInCordova() && browserInfo.android) { if (MainActivity.getChromeVersion() >= 48) { - define("audiorenderer", ["scripts/htmlmediarenderer"]); + //define("audiorenderer", ["scripts/htmlmediarenderer"]); + define("audiorenderer", ["cordova/android/vlcplayer"]); } else { define("audiorenderer", ["cordova/android/vlcplayer"]); } From e6a47129281bfb0c27ea80b39d315d4f8fd359f9 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 21 Jan 2016 15:40:10 -0500 Subject: [PATCH 03/17] fix video onError --- dashboard-ui/scripts/mediaplayer-video.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js index e551d7670c..8c151ee6c9 100644 --- a/dashboard-ui/scripts/mediaplayer-video.js +++ b/dashboard-ui/scripts/mediaplayer-video.js @@ -1192,7 +1192,8 @@ function onError() { var errorMsg = Globalize.translate('MessageErrorPlayingVideo'); - if (item.Type == "TvChannel") { + var item = self.currentItem; + if (item && item.Type == "TvChannel") { errorMsg += '

'; errorMsg += Globalize.translate('MessageEnsureOpenTuner'); errorMsg += '

'; From c27b651de5075b4b134e2c47e8e58e9ca11b0a0e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 21 Jan 2016 15:40:28 -0500 Subject: [PATCH 04/17] hide manage server --- dashboard-ui/scripts/mypreferencescommon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dashboard-ui/scripts/mypreferencescommon.js b/dashboard-ui/scripts/mypreferencescommon.js index 3fb9138dda..e353217527 100644 --- a/dashboard-ui/scripts/mypreferencescommon.js +++ b/dashboard-ui/scripts/mypreferencescommon.js @@ -32,7 +32,7 @@ pageIdOn('pageshow', 'myPreferencesMenuPage', function () { page.querySelector('.headerUser').innerHTML = user.Name; if (AppInfo.isNativeApp && browserInfo.safari && user.Policy.IsAdministrator) { - page.querySelector('.adminSection').classList.remove('hide'); + page.querySelector('.adminSection').classList.add('hide'); } else { page.querySelector('.adminSection').classList.add('hide'); } From a4f87944869d20d2297e7e3d116d69b12a2b79d0 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 21 Jan 2016 15:41:09 -0500 Subject: [PATCH 05/17] fix video onError --- dashboard-ui/scripts/mediaplayer-video.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js index 8c151ee6c9..f77cd4902e 100644 --- a/dashboard-ui/scripts/mediaplayer-video.js +++ b/dashboard-ui/scripts/mediaplayer-video.js @@ -1204,7 +1204,10 @@ message: errorMsg }); - self.onPlaybackStopped.call(mediaRenderer); + var mediaRenderer = self.currentMediaRenderer; + if (mediaRenderer) { + self.onPlaybackStopped.call(mediaRenderer); + } self.nextTrack(); } From 0edbfb067603d3f8008ed443c52a9360c774090d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 21 Jan 2016 16:30:59 -0500 Subject: [PATCH 06/17] fix latest aspect ratio --- dashboard-ui/scripts/librarybrowser.js | 40 ++++++++++++++++++++------ 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 3a5e5b79ea..62675df54c 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -29,6 +29,20 @@ var pageSizeKey = 'pagesize_v4'; + function getDesiredAspect(shape) { + + switch (shape) { + + case 'squareCard': + return 1; + case 'backdropCard': + return (16 / 9); + case 'portraitCard': + return (2 / 3); + } + return null; + } + var libraryBrowser = { getDefaultPageSize: function (key, defaultValue) { @@ -1791,6 +1805,7 @@ } var dateText; + var uiAspect = getDesiredAspect(options.shape); for (var i = 0, length = items.length; i < length; i++) { @@ -1828,13 +1843,13 @@ } } - html += LibraryBrowser.getPosterViewItemHtml(item, i, options, primaryImageAspectRatio, thumbWidth, posterWidth, squareSize, bannerWidth); + html += LibraryBrowser.getPosterViewItemHtml(item, i, options, primaryImageAspectRatio, thumbWidth, posterWidth, squareSize, bannerWidth, uiAspect); } return html; }, - getPosterViewItemHtml: function (item, index, options, primaryImageAspectRatio, thumbWidth, posterWidth, squareSize, bannerWidth) { + getPosterViewItemHtml: function (item, index, options, primaryImageAspectRatio, thumbWidth, posterWidth, squareSize, bannerWidth, uiAspect) { var html = ''; var imgUrl = null; @@ -1867,8 +1882,11 @@ tag: item.ImageTags.Primary, enableImageEnhancers: enableImageEnhancers }); - if (height != null) { - coverImage = true; + + if (primaryImageAspectRatio) { + if (uiAspect) { + coverImage = Math.abs(primaryImageAspectRatio - uiAspect) <= .2; + } } } else if (options.autoThumb && item.ImageTags && item.ImageTags.Thumb) { @@ -1947,8 +1965,11 @@ tag: item.ImageTags.Primary, enableImageEnhancers: enableImageEnhancers }); - if (height != null) { - coverImage = true; + + if (primaryImageAspectRatio) { + if (uiAspect) { + coverImage = Math.abs(primaryImageAspectRatio - uiAspect) <= .2; + } } } else if (item.ParentPrimaryImageTag) { @@ -1972,8 +1993,11 @@ tag: item.AlbumPrimaryImageTag, enableImageEnhancers: enableImageEnhancers }); - if (width != null) { - coverImage = true; + + if (primaryImageAspectRatio) { + if (uiAspect) { + coverImage = Math.abs(primaryImageAspectRatio - uiAspect) <= .2; + } } } else if (item.Type == 'Season' && item.ImageTags && item.ImageTags.Thumb) { From 9a4673fb353c9c23bcccefb3f420a2dcb3bad3f0 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 21 Jan 2016 23:03:38 -0500 Subject: [PATCH 07/17] update web tabs --- dashboard-ui/scripts/librarybrowser.js | 2 +- dashboard-ui/scripts/livetvsuggested.js | 2 ++ dashboard-ui/scripts/musicrecommended.js | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 62675df54c..93bcb4baf8 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -169,7 +169,7 @@ enableFullPaperTabs: function () { if (browserInfo.animate && !browserInfo.mobile) { - return true; + //return true; } return AppInfo.isNativeApp; diff --git a/dashboard-ui/scripts/livetvsuggested.js b/dashboard-ui/scripts/livetvsuggested.js index d0816a26aa..624f81a9d8 100644 --- a/dashboard-ui/scripts/livetvsuggested.js +++ b/dashboard-ui/scripts/livetvsuggested.js @@ -159,6 +159,8 @@ break; case 2: depends.push('scripts/livetvchannels'); + depends.push('paper-icon-item'); + depends.push('paper-item-body'); renderMethod = 'renderChannelsTab'; initMethod = 'initChannelsTab'; break; diff --git a/dashboard-ui/scripts/musicrecommended.js b/dashboard-ui/scripts/musicrecommended.js index 0802386390..a4e8443f59 100644 --- a/dashboard-ui/scripts/musicrecommended.js +++ b/dashboard-ui/scripts/musicrecommended.js @@ -252,6 +252,8 @@ renderMethod = 'renderSongsTab'; initMethod = 'initSongsTab'; depends.push('scripts/queryfilters'); + depends.push('paper-icon-item'); + depends.push('paper-item-body'); break; case 5: depends.push('scripts/musicgenres'); From 3c735c024d1b9ee51d706d3ff7359af52e7af9da Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 21 Jan 2016 23:07:18 -0500 Subject: [PATCH 08/17] merge from dev --- dashboard-ui/scripts/itemdetailpage.js | 2 +- dashboard-ui/scripts/livetvseriestimer.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index d8f7448a70..53e064730a 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -518,7 +518,7 @@ } if (item.ImageOrientation) { - attributes.push(createAttribute(Globalize.translate('MediaInfoOrientation'), item.ImageOrientation)); + //attributes.push(createAttribute(Globalize.translate('MediaInfoOrientation'), item.ImageOrientation)); } if (item.IsoSpeedRating) { diff --git a/dashboard-ui/scripts/livetvseriestimer.js b/dashboard-ui/scripts/livetvseriestimer.js index 5f0ad16d7a..aa6ea665db 100644 --- a/dashboard-ui/scripts/livetvseriestimer.js +++ b/dashboard-ui/scripts/livetvseriestimer.js @@ -12,6 +12,7 @@ ApiClient.cancelLiveTvTimer(id).then(function () { + Dashboard.hideLoadingMsg(); Dashboard.alert(Globalize.translate('MessageRecordingCancelled')); reload(page); @@ -115,6 +116,7 @@ item.Days = getDays(form); ApiClient.updateLiveTvSeriesTimer(item).then(function () { + Dashboard.hideLoadingMsg(); Dashboard.alert(Globalize.translate('MessageRecordingSaved')); }); }); From 6b3849d4fefcd1a2af6b3563a65258b3ac7156b1 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 22 Jan 2016 20:35:43 -0500 Subject: [PATCH 09/17] add dvbsub as not text --- dashboard-ui/devices/ie/ie.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dashboard-ui/devices/ie/ie.js b/dashboard-ui/devices/ie/ie.js index a0fa18cbab..ce2c809621 100644 --- a/dashboard-ui/devices/ie/ie.js +++ b/dashboard-ui/devices/ie/ie.js @@ -6,13 +6,11 @@ function getWeek(date) { var onejan = new Date(date.getFullYear(), 0, 1); - return Math.ceil((((date - onejan) / 86400000) + onejan.getDay() + 1) / 5); + return Math.ceil((((date - onejan) / 86400000) + onejan.getDay() + 1) / 4); } function onPageShow() { - var page = this; - var expectedValue; var msg; From 464408e800103a3b50e49b4ae934ceb6323b842f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 23 Jan 2016 17:52:41 -0500 Subject: [PATCH 10/17] fix images not scaling --- dashboard-ui/scripts/librarybrowser.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 93bcb4baf8..fe13f148e6 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -33,11 +33,11 @@ switch (shape) { - case 'squareCard': + case 'square': return 1; - case 'backdropCard': + case 'backdrop': return (16 / 9); - case 'portraitCard': + case 'portrait': return (2 / 3); } return null; From 3629dc76cd663faf595db42c7008386459c023fa Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 24 Jan 2016 14:38:53 -0500 Subject: [PATCH 11/17] fix ios 9.3 navigation --- .../thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js index df6fc2d158..beef9913c6 100644 --- a/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js +++ b/dashboard-ui/thirdparty/jquerymobile-1.4.5/jquery.mobile.custom.js @@ -764,7 +764,9 @@ // a `popstate` on hash assignement or `replaceState` then we need avoid the branch // that swallows the event created by the popstate generated by the hash assignment // At the time of this writing this happens with Opera 12 and some version of IE - this.preventHashAssignPopState = false; + if (!browserInfo.safari) { + this.preventHashAssignPopState = false; + } state = $.extend({ url: href, From 6ccfa18e4f767ea5da9451441a2e8ab6654b443c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 24 Jan 2016 14:39:03 -0500 Subject: [PATCH 12/17] fix photo page error --- dashboard-ui/scripts/photos.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dashboard-ui/scripts/photos.js b/dashboard-ui/scripts/photos.js index c57de1c690..5bf5c621d0 100644 --- a/dashboard-ui/scripts/photos.js +++ b/dashboard-ui/scripts/photos.js @@ -1,6 +1,6 @@ (function ($, document) { - var view = LibraryBrowser.getDefaultItemsView('Poster', 'Poster'); + var view = 'Poster'; var data = {}; function getQuery(tab) { From fb0e8becca0f4ab1de8551991a4f4beb71d0cf66 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 24 Jan 2016 14:39:13 -0500 Subject: [PATCH 13/17] fix image scaling --- dashboard-ui/scripts/librarybrowser.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index fe13f148e6..82c61e9b2f 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -1885,7 +1885,9 @@ if (primaryImageAspectRatio) { if (uiAspect) { - coverImage = Math.abs(primaryImageAspectRatio - uiAspect) <= .2; + if (Math.abs(primaryImageAspectRatio - uiAspect) <= .2) { + coverImage = true; + } } } @@ -1968,7 +1970,9 @@ if (primaryImageAspectRatio) { if (uiAspect) { - coverImage = Math.abs(primaryImageAspectRatio - uiAspect) <= .2; + if (Math.abs(primaryImageAspectRatio - uiAspect) <= .2) { + coverImage = true; + } } } } @@ -1996,7 +2000,9 @@ if (primaryImageAspectRatio) { if (uiAspect) { - coverImage = Math.abs(primaryImageAspectRatio - uiAspect) <= .2; + if (Math.abs(primaryImageAspectRatio - uiAspect) <= .2) { + coverImage = true; + } } } } From aed423d042c72dc319856b8f85c7e494d7ddccd8 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 24 Jan 2016 17:00:57 -0500 Subject: [PATCH 14/17] update ie messages --- dashboard-ui/devices/ie/ie.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/dashboard-ui/devices/ie/ie.js b/dashboard-ui/devices/ie/ie.js index ce2c809621..b2d12d0801 100644 --- a/dashboard-ui/devices/ie/ie.js +++ b/dashboard-ui/devices/ie/ie.js @@ -1,4 +1,4 @@ -(function () { +define(['browser'], function (browser) { require(['css!devices/ie/ie.css']); var browserSwitchKey = "ieswitchbrowser"; @@ -31,7 +31,7 @@ title: Globalize.translate('HeaderTryMicrosoftEdge') }); - } else { + } else if (!browser.mobile) { expectedValue = getWeek(new Date()) + "_7"; @@ -60,5 +60,4 @@ pageClassOn('pageshow', "libraryPage", onPageShow); pageClassOn('pageshow', "type-interior", onPageShow); - -})(); \ No newline at end of file +}); \ No newline at end of file From 79aaecc11f220c2044ed936939377e4dcbb51956 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 27 Jan 2016 01:06:26 -0500 Subject: [PATCH 15/17] fix mediaplayer script error --- dashboard-ui/scripts/mediaplayer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index 0f8ad00326..4ccf5b95c6 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -1595,7 +1595,6 @@ state.PlayState.PlayMethod = self.streamInfo.playMethod; - state.PlayState.LiveStreamId = mediaSource.LiveStreamId; state.PlayState.PlaySessionId = getParameterByName('PlaySessionId', currentSrc); } } @@ -1603,6 +1602,7 @@ if (mediaSource) { state.PlayState.MediaSourceId = mediaSource.Id; + state.PlayState.LiveStreamId = mediaSource.LiveStreamId; state.NowPlayingItem = { RunTimeTicks: mediaSource.RunTimeTicks From d21656fca572174f7bbdc7717db48d304c8ce27a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 27 Jan 2016 00:46:01 -0500 Subject: [PATCH 16/17] fixes #1422 - Pictures distorted --- dashboard-ui/css/card.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dashboard-ui/css/card.css b/dashboard-ui/css/card.css index 4643361534..a2c6498bdd 100644 --- a/dashboard-ui/css/card.css +++ b/dashboard-ui/css/card.css @@ -293,7 +293,7 @@ } .coveredCardImage { - background-size: 100% 100%; + background-size: cover; background-position: center center; } From 86604e9a51cbf60993ff476f9a3f966bc71722f7 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 27 Jan 2016 00:54:18 -0500 Subject: [PATCH 17/17] fixes #1422 - photo scaling --- dashboard-ui/css/card.css | 6 +++++- dashboard-ui/scripts/librarybrowser.js | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/dashboard-ui/css/card.css b/dashboard-ui/css/card.css index a2c6498bdd..be0fc6a170 100644 --- a/dashboard-ui/css/card.css +++ b/dashboard-ui/css/card.css @@ -293,10 +293,14 @@ } .coveredCardImage { - background-size: cover; + background-size: 100% 100%; background-position: center center; } + .coveredCardImage.noScale { + background-size: cover; + } + .centeredCardImage { background-position: center center; } diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 82c61e9b2f..069e25e2a7 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -2126,6 +2126,9 @@ if (coverImage) { imageCssClass += " coveredCardImage"; + if (item.MediaType == 'Photo' || item.Type == 'PhotoAlbum' || item.Type == 'Folder') { + imageCssClass += " noScale"; + } } if (options.centerImage) { imageCssClass += " centeredCardImage";