diff --git a/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js b/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js index 8a7ba18894..b13f0f1061 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js +++ b/dashboard-ui/bower_components/emby-webcomponents/images/imagehelper.js @@ -138,7 +138,7 @@ define(['visibleinviewport', 'imageFetcher', 'layoutManager', 'events', 'browser return true; } - function fillVibrantOnLoaded(img, url, vibrantElement, canvas, canvasContext) { + function fillVibrantOnLoaded(img, url, vibrantElement) { vibrantElement = document.getElementById(vibrantElement); if (!vibrantElement) { @@ -148,7 +148,7 @@ define(['visibleinviewport', 'imageFetcher', 'layoutManager', 'events', 'browser requestIdleCallback(function () { //var now = new Date().getTime(); - var swatch = getVibrantInfo(canvas || img, url, canvasContext).split('|'); + var swatch = getVibrantInfo(img, url).split('|'); //console.log('vibrant took ' + (new Date().getTime() - now) + 'ms'); if (swatch.length) { @@ -176,7 +176,7 @@ define(['visibleinviewport', 'imageFetcher', 'layoutManager', 'events', 'browser url = url.split('?')[0]; - var cacheKey = 'vibrant11'; + var cacheKey = 'vibrant21'; return cacheKey + url; } @@ -185,14 +185,14 @@ define(['visibleinviewport', 'imageFetcher', 'layoutManager', 'events', 'browser return appSettings.get(getSettingsKey(url)); } - function getVibrantInfo(img, url, canvasContext) { + function getVibrantInfo(img, url) { var value = getCachedVibrantInfo(url); if (value) { return value; } - var vibrant = new Vibrant(img, canvasContext); + var vibrant = new Vibrant(img); var swatches = vibrant.swatches(); value = ''; diff --git a/dashboard-ui/bower_components/vibrant/dist/vibrant.js b/dashboard-ui/bower_components/vibrant/dist/vibrant.js index a71e4cce80..d351be3b3a 100644 --- a/dashboard-ui/bower_components/vibrant/dist/vibrant.js +++ b/dashboard-ui/bower_components/vibrant/dist/vibrant.js @@ -622,7 +622,7 @@ module.exports = MMCQ.quantize this.swatches = bind(this.swatches, this); var a, allPixels, b, cmap, g, i, image, imageData, offset, pixelCount, pixels, r; if (typeof colorCount === 'undefined') { - colorCount = 64; + colorCount = 16; } if (typeof quality === 'undefined') { quality = 5; @@ -837,22 +837,29 @@ module.exports = MMCQ.quantize */ window.CanvasImage = CanvasImage = (function() { - function CanvasImage(image, context) { + function CanvasImage(image) { - if (context) { - this.width = image.width; - this.height = image.height; + this.canvas = document.createElement('canvas'); - this.context = context; - } else { - this.canvas = document.createElement('canvas'); - this.width = this.canvas.width = image.width; - this.height = this.canvas.height = image.height; + this.context = this.canvas.getContext('2d'); - this.context = this.canvas.getContext('2d'); - this.context.drawImage(image, 0, 0, this.width, this.height); - } - } + var originalWidth = image.width; + var originalHeight = image.height; + + var maxArea = 300 * 300; + var bitmapArea = originalWidth * originalHeight; + var scaleRatio = 1; + if (bitmapArea > maxArea) { + scaleRatio = maxArea / bitmapArea; + } + + //console.log(scaleRatio); + + this.width = this.canvas.width = originalWidth * scaleRatio; + this.height = this.canvas.height = originalHeight * scaleRatio; + + this.context.drawImage(image, 0, 0, originalWidth, originalHeight, 0, 0, this.width, this.height); + } CanvasImage.prototype.getPixelCount = function() { return this.width * this.height; diff --git a/dashboard-ui/css/dashboard.css b/dashboard-ui/css/dashboard.css index c004737bf2..5f3c801d6c 100644 --- a/dashboard-ui/css/dashboard.css +++ b/dashboard-ui/css/dashboard.css @@ -160,7 +160,7 @@ progress { top: 0; right: 0; bottom: 0; - left: 280px; + left: 260px; } .dashboardDocument .adminDrawerLogo { @@ -339,7 +339,6 @@ a[data-role='button'], .type-interior button:not([data-role='none']):not(.clearB @media all and (min-width: 1200px) { .mainDrawerPanel:not([narrow]) .content-primary { - padding-right: 1.5em; padding-left: 2em; } } diff --git a/dashboard-ui/css/librarybrowser.css b/dashboard-ui/css/librarybrowser.css index ec7ba609e8..8953d3142e 100644 --- a/dashboard-ui/css/librarybrowser.css +++ b/dashboard-ui/css/librarybrowser.css @@ -89,7 +89,7 @@ } .homePageSection + .homePageSection { - margin-top: 30px; + margin-top: 25px; } .sectionHeaderButton { diff --git a/dashboard-ui/scripts/livetvsuggested.js b/dashboard-ui/scripts/livetvsuggested.js index a319014ffe..f9dd1bdfb6 100644 --- a/dashboard-ui/scripts/livetvsuggested.js +++ b/dashboard-ui/scripts/livetvsuggested.js @@ -103,12 +103,7 @@ }); } - var lastFullRender = 0; - function enableFullRender() { - return (new Date().getTime() - lastFullRender) > 300000; - } - - function reload(page) { + function reload(page, enableFullRender) { renderActiveRecordings(page, ApiClient.getLiveTvRecordings({ UserId: Dashboard.getCurrentUserId(), @@ -118,7 +113,7 @@ EnableImageTypes: "Primary,Thumb,Backdrop" })); - if (!enableFullRender()) { + if (!enableFullRender) { return; } @@ -190,7 +185,6 @@ renderItems(page, result.Items, 'upcomingKidsItems'); }); - lastFullRender = new Date().getTime(); } function renderItems(page, items, sectionClass, overlayButton, shape) { @@ -227,6 +221,10 @@ return function (view, params) { var self = this; + var lastFullRender = 0; + function enableFullRender() { + return (new Date().getTime() - lastFullRender) > 300000; + } self.initTab = function () { @@ -247,7 +245,13 @@ self.renderTab = function () { var tabContent = view.querySelector('.pageTabContent[data-index=\'' + 0 + '\']'); - reload(tabContent); + + if (enableFullRender()) { + reload(tabContent, true); + lastFullRender = new Date().getTime(); + } else { + reload(tabContent); + } }; var tabControllers = []; diff --git a/dashboard-ui/scripts/sections.js b/dashboard-ui/scripts/sections.js index 7185928d06..ae326e7a68 100644 --- a/dashboard-ui/scripts/sections.js +++ b/dashboard-ui/scripts/sections.js @@ -569,7 +569,7 @@ lazy: true, overlayPlayButton: true, context: 'home', - centerText: true, + centerText: !supportsImageAnalysis, allowBottomPadding: !enableScrollX(), cardLayout: supportsImageAnalysis, vibrant: supportsImageAnalysis