diff --git a/app/actions/APIActions.js b/app/actions/APIActions.js index 7ad4535..09bd1af 100644 --- a/app/actions/APIActions.js +++ b/app/actions/APIActions.js @@ -64,10 +64,11 @@ export default function (action, requestType, successType, failureType) { * @param pageNumber Number of the page that was fetched. */ const fetchPaginatedItemsSuccess = function (jsonData, pageNumber, limit) { + const totalCount = jsonData.totalCount; jsonData = _normalizeAPIResponse(jsonData); // Compute the total number of pages - const nPages = Math.ceil(jsonData.result[itemName].length / limit); + const nPages = Math.ceil(totalCount / limit); // Return success actions return [ diff --git a/app/styles/layouts/Sidebar.scss b/app/styles/layouts/Sidebar.scss index 4c7d46f..46df2fb 100644 --- a/app/styles/layouts/Sidebar.scss +++ b/app/styles/layouts/Sidebar.scss @@ -104,7 +104,6 @@ button.toggle { */ .main-panel { padding: $mainPadding; - z-index: -10; } /* @@ -134,6 +133,10 @@ button.toggle { } @media (max-width: 991px) { + .main-panel { + z-index: -10; + } + .sidebar { position: static; } diff --git a/app/views/AlbumsPage.jsx b/app/views/AlbumsPage.jsx index eebdaa8..4c36f3d 100644 --- a/app/views/AlbumsPage.jsx +++ b/app/views/AlbumsPage.jsx @@ -36,6 +36,9 @@ class AlbumsPageIntl extends Component { const currentPage = parseInt(this.props.location.query.page) || 1; const nextPage = parseInt(nextProps.location.query.page) || 1; if (currentPage != nextPage) { + // Unload data on page change + this.props.actions.clearPaginatedResults(); + // Load new data this.props.actions.loadAlbums({pageNumber: nextPage}); } } diff --git a/app/views/ArtistsPage.jsx b/app/views/ArtistsPage.jsx index 8dfd0c7..fe31a0b 100644 --- a/app/views/ArtistsPage.jsx +++ b/app/views/ArtistsPage.jsx @@ -36,6 +36,9 @@ class ArtistsPageIntl extends Component { const currentPage = parseInt(this.props.location.query.page) || 1; const nextPage = parseInt(nextProps.location.query.page) || 1; if (currentPage != nextPage) { + // Unload data on page change + this.props.actions.clearPaginatedResults(); + // Load new data this.props.actions.loadPaginatedArtists({pageNumber: nextPage}); } } diff --git a/app/views/SongsPage.jsx b/app/views/SongsPage.jsx index 49c00e8..6ddfd80 100644 --- a/app/views/SongsPage.jsx +++ b/app/views/SongsPage.jsx @@ -36,6 +36,9 @@ class SongsPageIntl extends Component { const currentPage = parseInt(this.props.location.query.page) || 1; const nextPage = parseInt(nextProps.location.query.page) || 1; if (currentPage != nextPage) { + // Unload data on page change + this.props.actions.clearPaginatedResults(); + // Load new data this.props.actions.loadPaginatedSongs({pageNumber: nextPage}); } } diff --git a/public/fix.ie9.js.map b/public/fix.ie9.js.map index 59638d9..7bbd78a 100644 --- a/public/fix.ie9.js.map +++ b/public/fix.ie9.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///fix.ie9.js","webpack:///webpack/bootstrap cad06dfee745fe56ad03?0278","webpack:///./fix.ie9.js","webpack:///./~/html5shiv/dist/html5shiv.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","0","Object","defineProperty","value","_html5shiv","keys","forEach","key","enumerable","get","634","window","document","addStyleSheet","ownerDocument","cssText","createElement","parent","getElementsByTagName","documentElement","innerHTML","insertBefore","lastChild","firstChild","getElements","elements","html5","split","addElements","newElements","join","shivDocument","getExpandoData","data","expandoData","expando","expanID","nodeName","supportsUnknownElements","node","cache","cloneNode","saveClones","test","createElem","canHaveChildren","reSkip","tagUrn","frag","appendChild","createDocumentFragment","clone","i","elems","l","length","shivMethods","createFrag","Function","replace","shivCSS","supportsHtml5Styles","hasCSS","version","options","a","childNodes","e","type","this"],"mappings":"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","file":"fix.ie9.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"./\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _html5shiv = __webpack_require__(634);\n\t\n\tObject.keys(_html5shiv).forEach(function (key) {\n\t if (key === \"default\" || key === \"__esModule\") return;\n\t Object.defineProperty(exports, key, {\n\t enumerable: true,\n\t get: function get() {\n\t return _html5shiv[key];\n\t }\n\t });\n\t});\n\n/***/ },\n\n/***/ 634:\n/***/ function(module, exports) {\n\n\t/**\n\t* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed\n\t*/\n\t;(function(window, document) {\n\t/*jshint evil:true */\n\t /** version */\n\t var version = '3.7.3-pre';\n\t\n\t /** Preset options */\n\t var options = window.html5 || {};\n\t\n\t /** Used to skip problem elements */\n\t var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;\n\t\n\t /** Not all elements can be cloned in IE **/\n\t var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;\n\t\n\t /** Detect whether the browser supports default html5 styles */\n\t var supportsHtml5Styles;\n\t\n\t /** Name of the expando, to work with multiple documents or to re-shiv one document */\n\t var expando = '_html5shiv';\n\t\n\t /** The id for the the documents expando */\n\t var expanID = 0;\n\t\n\t /** Cached data for each document */\n\t var expandoData = {};\n\t\n\t /** Detect whether the browser supports unknown elements */\n\t var supportsUnknownElements;\n\t\n\t (function() {\n\t try {\n\t var a = document.createElement('a');\n\t a.innerHTML = '';\n\t //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles\n\t supportsHtml5Styles = ('hidden' in a);\n\t\n\t supportsUnknownElements = a.childNodes.length == 1 || (function() {\n\t // assign a false positive if unable to shiv\n\t (document.createElement)('a');\n\t var frag = document.createDocumentFragment();\n\t return (\n\t typeof frag.cloneNode == 'undefined' ||\n\t typeof frag.createDocumentFragment == 'undefined' ||\n\t typeof frag.createElement == 'undefined'\n\t );\n\t }());\n\t } catch(e) {\n\t // assign a false positive if detection fails => unable to shiv\n\t supportsHtml5Styles = true;\n\t supportsUnknownElements = true;\n\t }\n\t\n\t }());\n\t\n\t /*--------------------------------------------------------------------------*/\n\t\n\t /**\n\t * Creates a style sheet with the given CSS text and adds it to the document.\n\t * @private\n\t * @param {Document} ownerDocument The document.\n\t * @param {String} cssText The CSS text.\n\t * @returns {StyleSheet} The style element.\n\t */\n\t function addStyleSheet(ownerDocument, cssText) {\n\t var p = ownerDocument.createElement('p'),\n\t parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;\n\t\n\t p.innerHTML = 'x';\n\t return parent.insertBefore(p.lastChild, parent.firstChild);\n\t }\n\t\n\t /**\n\t * Returns the value of `html5.elements` as an array.\n\t * @private\n\t * @returns {Array} An array of shived element node names.\n\t */\n\t function getElements() {\n\t var elements = html5.elements;\n\t return typeof elements == 'string' ? elements.split(' ') : elements;\n\t }\n\t\n\t /**\n\t * Extends the built-in list of html5 elements\n\t * @memberOf html5\n\t * @param {String|Array} newElements whitespace separated list or array of new element names to shiv\n\t * @param {Document} ownerDocument The context document.\n\t */\n\t function addElements(newElements, ownerDocument) {\n\t var elements = html5.elements;\n\t if(typeof elements != 'string'){\n\t elements = elements.join(' ');\n\t }\n\t if(typeof newElements != 'string'){\n\t newElements = newElements.join(' ');\n\t }\n\t html5.elements = elements +' '+ newElements;\n\t shivDocument(ownerDocument);\n\t }\n\t\n\t /**\n\t * Returns the data associated to the given document\n\t * @private\n\t * @param {Document} ownerDocument The document.\n\t * @returns {Object} An object of data.\n\t */\n\t function getExpandoData(ownerDocument) {\n\t var data = expandoData[ownerDocument[expando]];\n\t if (!data) {\n\t data = {};\n\t expanID++;\n\t ownerDocument[expando] = expanID;\n\t expandoData[expanID] = data;\n\t }\n\t return data;\n\t }\n\t\n\t /**\n\t * returns a shived element for the given nodeName and document\n\t * @memberOf html5\n\t * @param {String} nodeName name of the element\n\t * @param {Document} ownerDocument The context document.\n\t * @returns {Object} The shived element.\n\t */\n\t function createElement(nodeName, ownerDocument, data){\n\t if (!ownerDocument) {\n\t ownerDocument = document;\n\t }\n\t if(supportsUnknownElements){\n\t return ownerDocument.createElement(nodeName);\n\t }\n\t if (!data) {\n\t data = getExpandoData(ownerDocument);\n\t }\n\t var node;\n\t\n\t if (data.cache[nodeName]) {\n\t node = data.cache[nodeName].cloneNode();\n\t } else if (saveClones.test(nodeName)) {\n\t node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();\n\t } else {\n\t node = data.createElem(nodeName);\n\t }\n\t\n\t // Avoid adding some elements to fragments in IE < 9 because\n\t // * Attributes like `name` or `type` cannot be set/changed once an element\n\t // is inserted into a document/fragment\n\t // * Link elements with `src` attributes that are inaccessible, as with\n\t // a 403 response, will cause the tab/window to crash\n\t // * Script elements appended to fragments will execute when their `src`\n\t // or `text` property is set\n\t return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;\n\t }\n\t\n\t /**\n\t * returns a shived DocumentFragment for the given document\n\t * @memberOf html5\n\t * @param {Document} ownerDocument The context document.\n\t * @returns {Object} The shived DocumentFragment.\n\t */\n\t function createDocumentFragment(ownerDocument, data){\n\t if (!ownerDocument) {\n\t ownerDocument = document;\n\t }\n\t if(supportsUnknownElements){\n\t return ownerDocument.createDocumentFragment();\n\t }\n\t data = data || getExpandoData(ownerDocument);\n\t var clone = data.frag.cloneNode(),\n\t i = 0,\n\t elems = getElements(),\n\t l = elems.length;\n\t for(;i