diff --git a/dashboard-ui/music.html b/dashboard-ui/music.html index 9f3d511538..3396023ecb 100644 --- a/dashboard-ui/music.html +++ b/dashboard-ui/music.html @@ -4,7 +4,7 @@ Emby -
+
${TabSuggestions} diff --git a/dashboard-ui/playlists.html b/dashboard-ui/playlists.html index 02d361414a..f280cee4aa 100644 --- a/dashboard-ui/playlists.html +++ b/dashboard-ui/playlists.html @@ -4,7 +4,7 @@ Emby -
+
diff --git a/dashboard-ui/scripts/extensions.js b/dashboard-ui/scripts/extensions.js index 80d2ef48db..3ea28a4ba4 100644 --- a/dashboard-ui/scripts/extensions.js +++ b/dashboard-ui/scripts/extensions.js @@ -453,33 +453,33 @@ function parseISO8601Date(s, options) { // The query params for the embedded page are also added as a property/value // object on the options object. You can access it from your page notifications // via data.options.pageData. - $(document).bind("pagebeforechange", function (e, data) { + //$(document).bind("pagebeforechange", function (e, data) { - // We only want to handle the case where we are being asked - // to go to a page by URL, and only if that URL is referring - // to an internal page by id. + // // We only want to handle the case where we are being asked + // // to go to a page by URL, and only if that URL is referring + // // to an internal page by id. - if (typeof data.toPage === "string") { - var u = $.mobile.path.parseUrl(data.toPage); - if ($.mobile.path.isEmbeddedPage(u)) { + // if (typeof data.toPage === "string") { + // var u = $.mobile.path.parseUrl(data.toPage); + // if ($.mobile.path.isEmbeddedPage(u)) { - // The request is for an internal page, if the hash - // contains query (search) params, strip them off the - // toPage URL and then set options.dataUrl appropriately - // so the location.hash shows the originally requested URL - // that hash the query params in the hash. + // // The request is for an internal page, if the hash + // // contains query (search) params, strip them off the + // // toPage URL and then set options.dataUrl appropriately + // // so the location.hash shows the originally requested URL + // // that hash the query params in the hash. - var u2 = $.mobile.path.parseUrl(u.hash.replace(/^#/, "")); - if (u2.search) { - if (!data.options.dataUrl) { - data.options.dataUrl = data.toPage; - } - data.options.pageData = queryStringToObject(u2.search); - data.toPage = u.hrefNoHash + "#" + u2.pathname; - } - } - } - }); + // var u2 = $.mobile.path.parseUrl(u.hash.replace(/^#/, "")); + // if (u2.search) { + // if (!data.options.dataUrl) { + // data.options.dataUrl = data.toPage; + // } + // data.options.pageData = queryStringToObject(u2.search); + // data.toPage = u.hrefNoHash + "#" + u2.pathname; + // } + // } + // } + //}); })(jQuery, window); diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index f727fc859a..f6ef19a326 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -5,6 +5,7 @@ var libraryBrowser = { getDefaultPageSize: function (key, defaultValue) { + return 100; var saved = appStorage.getItem(key || pageSizeKey); if (saved) { 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 676d76a439..e512ead08c 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 @@ -859,19 +859,7 @@ $.ui.plugin = { //simply set the active page's minimum height to screen height, depending on orientation resetActivePageHeight: function( height ) { - var page = $( "." + $.mobile.activePageClass ), - pageHeight = page.height(), - pageOuterHeight = page.outerHeight( true ); - height = (typeof height === "number") ? height : $.mobile.getScreenHeight(); - - // Remove any previous min-height setting - page.css( "min-height", "" ); - - // Set the minimum height only if the height as determined by CSS is insufficient - if ( page.height() < height ) { - page.css( "min-height", height - ( pageOuterHeight - pageHeight ) ); - } }, loading: function () { @@ -1354,187 +1342,6 @@ if ( !$.support.boxShadow ) { }; })( jQuery ); - - - // throttled resize event - (function( $ ) { - $.event.special.throttledresize = { - setup: function() { - $( this ).bind( "resize", handler ); - }, - teardown: function() { - $( this ).unbind( "resize", handler ); - } - }; - - var throttle = 250, - handler = function() { - curr = ( new Date() ).getTime(); - diff = curr - lastCall; - - if ( diff >= throttle ) { - - lastCall = curr; - $( this ).trigger( "throttledresize" ); - - } else { - - if ( heldCall ) { - clearTimeout( heldCall ); - } - - // Promise a held call will still execute - heldCall = setTimeout( handler, throttle - diff ); - } - }, - lastCall = 0, - heldCall, - curr, - diff; - })( jQuery ); - - -(function( $, window ) { - var win = $( window ), - event_name = "orientationchange", - get_orientation, - last_orientation, - initial_orientation_is_landscape, - initial_orientation_is_default, - portrait_map = { "0": true, "180": true }, - ww, wh, landscape_threshold; - - // It seems that some device/browser vendors use window.orientation values 0 and 180 to - // denote the "default" orientation. For iOS devices, and most other smart-phones tested, - // the default orientation is always "portrait", but in some Android and RIM based tablets, - // the default orientation is "landscape". The following code attempts to use the window - // dimensions to figure out what the current orientation is, and then makes adjustments - // to the to the portrait_map if necessary, so that we can properly decode the - // window.orientation value whenever get_orientation() is called. - // - // Note that we used to use a media query to figure out what the orientation the browser - // thinks it is in: - // - // initial_orientation_is_landscape = $.mobile.media("all and (orientation: landscape)"); - // - // but there was an iPhone/iPod Touch bug beginning with iOS 4.2, up through iOS 5.1, - // where the browser *ALWAYS* applied the landscape media query. This bug does not - // happen on iPad. - - if ( $.support.orientation ) { - - // Check the window width and height to figure out what the current orientation - // of the device is at this moment. Note that we've initialized the portrait map - // values to 0 and 180, *AND* we purposely check for landscape so that if we guess - // wrong, , we default to the assumption that portrait is the default orientation. - // We use a threshold check below because on some platforms like iOS, the iPhone - // form-factor can report a larger width than height if the user turns on the - // developer console. The actual threshold value is somewhat arbitrary, we just - // need to make sure it is large enough to exclude the developer console case. - - ww = window.innerWidth || win.width(); - wh = window.innerHeight || win.height(); - landscape_threshold = 50; - - initial_orientation_is_landscape = ww > wh && ( ww - wh ) > landscape_threshold; - - // Now check to see if the current window.orientation is 0 or 180. - initial_orientation_is_default = portrait_map[ window.orientation ]; - - // If the initial orientation is landscape, but window.orientation reports 0 or 180, *OR* - // if the initial orientation is portrait, but window.orientation reports 90 or -90, we - // need to flip our portrait_map values because landscape is the default orientation for - // this device/browser. - if ( ( initial_orientation_is_landscape && initial_orientation_is_default ) || ( !initial_orientation_is_landscape && !initial_orientation_is_default ) ) { - portrait_map = { "-90": true, "90": true }; - } - } - - $.event.special.orientationchange = $.extend( {}, $.event.special.orientationchange, { - setup: function() { - // If the event is supported natively, return false so that jQuery - // will bind to the event using DOM methods. - if ( $.support.orientation && !$.event.special.orientationchange.disabled ) { - return false; - } - - // Get the current orientation to avoid initial double-triggering. - last_orientation = get_orientation(); - - // Because the orientationchange event doesn't exist, simulate the - // event by testing window dimensions on resize. - win.bind( "throttledresize", handler ); - }, - teardown: function() { - // If the event is not supported natively, return false so that - // jQuery will unbind the event using DOM methods. - if ( $.support.orientation && !$.event.special.orientationchange.disabled ) { - return false; - } - - // Because the orientationchange event doesn't exist, unbind the - // resize event handler. - win.unbind( "throttledresize", handler ); - }, - add: function( handleObj ) { - // Save a reference to the bound event handler. - var old_handler = handleObj.handler; - - handleObj.handler = function( event ) { - // Modify event object, adding the .orientation property. - event.orientation = get_orientation(); - - // Call the originally-bound event handler and return its result. - return old_handler.apply( this, arguments ); - }; - } - }); - - // If the event is not supported natively, this handler will be bound to - // the window resize event to simulate the orientationchange event. - function handler() { - // Get the current orientation. - var orientation = get_orientation(); - - if ( orientation !== last_orientation ) { - // The orientation has changed, so trigger the orientationchange event. - last_orientation = orientation; - win.trigger( event_name ); - } - } - - // Get the current page orientation. This method is exposed publicly, should it - // be needed, as jQuery.event.special.orientationchange.orientation() - $.event.special.orientationchange.orientation = get_orientation = function() { - var isPortrait = true, elem = document.documentElement; - - // prefer window orientation to the calculation based on screensize as - // the actual screen resize takes place before or after the orientation change event - // has been fired depending on implementation (eg android 2.3 is before, iphone after). - // More testing is required to determine if a more reliable method of determining the new screensize - // is possible when orientationchange is fired. (eg, use media queries + element + opacity) - if ( $.support.orientation ) { - // if the window orientation registers as 0 or 180 degrees report - // portrait, otherwise landscape - isPortrait = portrait_map[ window.orientation ]; - } else { - isPortrait = elem && elem.clientWidth / elem.clientHeight < 1.1; - } - - return isPortrait ? "portrait" : "landscape"; - }; - - $.fn[ event_name ] = function( fn ) { - return fn ? this.bind( event_name, fn ) : this.trigger( event_name ); - }; - - // jQuery < 1.8 - if ( $.attrFn ) { - $.attrFn[ event_name ] = true; - } - -}( jQuery, this )); - (function( $, undefined ) { var props = { "animation": {}, @@ -4500,7 +4307,14 @@ $.fn.fieldcontain = function(/* options */) { TransitionHandler, promise; - this._triggerCssTransitionEvents( to, from, "before" ); + this._triggerCssTransitionEvents(to, from, "before"); + + if (from) { + from[0].style.display = 'none'; + } + to[0].style.display = 'block'; + this._triggerCssTransitionEvents(to, from); + return; // TODO put this in a binding to events *outside* the widget this._hideLoading(); @@ -4710,7 +4524,7 @@ $.fn.fieldcontain = function(/* options */) { return; } - // We need to make sure the page we are given has already been enhanced. + // We need to make sure the page we are given has already been enhanced. toPage.page({ role: settings.role }); // If the changePage request was sent from a hashChange event, check to @@ -4786,7 +4600,7 @@ $.fn.fieldcontain = function(/* options */) { // Set the location hash. if ( url && !settings.fromHashChange ) { - // rebuilding the hash here since we loose it earlier on + // rebuilding the hash here since we loose it earlier on // TODO preserve the originally passed in path if ( !$.mobile.path.isPath( url ) && url.indexOf( "#" ) < 0 ) { url = "#" + url; @@ -4839,7 +4653,6 @@ $.fn.fieldcontain = function(/* options */) { this._releaseTransitionLock(); this._triggerWithDeprecated("transition", triggerData); - this._triggerWithDeprecated("change", triggerData); }, // determine the current base url @@ -5062,35 +4875,23 @@ $.fn.fieldcontain = function(/* options */) { // TODO ensure that the navigate binding in the content widget happens at the right time $.mobile.pageContainer.pagecontainer(); - //set page min-heights to be device specific - $.mobile.document.bind( "pageshow", function(e) { - - // We need to wait for window.load to make sure that styles have already been rendered, - // otherwise heights of external toolbars will have the wrong value - if ( loadDeferred ) { - loadDeferred.done( $.mobile.resetActivePageHeight ); - } else { - $.mobile.resetActivePageHeight(); - } - }); function removePage(page) { - - $(page).removeWithDependents(); + + page.parentNode.removeChild(page); } - function cleanPages(currentPage) { + function cleanPages(newPage) { var pages = document.querySelectorAll("div[data-role='page']"); if (pages.length < 5) { - return; + //return; } for (var i = 0, length = pages.length; i < length; i++) { var page = pages[i]; - if (page != currentPage) { + if (page != newPage) { removePage(page); - break; } } } @@ -5098,16 +4899,13 @@ $.fn.fieldcontain = function(/* options */) { //set page min-heights to be device specific $.mobile.document.bind("pagehide", function (e,data) { - var page = e.target; + var toPage = data.toPage ? data.toPage[0] : null; - //check if this is a same page transition and if so don't remove the page - if (!data.samePage) { - cleanPages(page); - } + if (toPage && toPage.getAttribute('data-dom-cache')) { + cleanPages(toPage); + } }); - $.mobile.window.bind( "throttledresize", $.mobile.resetActivePageHeight ); - };//navreadyDeferred done callback $( function() { domreadyDeferred.resolve(); } ); @@ -6809,11 +6607,11 @@ $.widget( "mobile.panel", { }, _bindFixListener: function() { - this._on( $( window ), { "throttledresize": "_positionPanel" }); + this._on( $( window ), { "resize": "_positionPanel" }); }, _unbindFixListener: function() { - this._off( $( window ), "throttledresize" ); + this._off($(window), "resize"); }, _unfixPanel: function() {