diff --git a/dashboard-ui/apiclient/connectionmanager.js b/dashboard-ui/apiclient/connectionmanager.js index 7b7b60dc6c..b25f94c0b5 100644 --- a/dashboard-ui/apiclient/connectionmanager.js +++ b/dashboard-ui/apiclient/connectionmanager.js @@ -253,27 +253,12 @@ Events.trigger(self, 'apiclientcreated', [apiClient]); } - if (server.AccessToken && server.UserId) { - - apiClient.setAuthenticationInfo(server.AccessToken, server.UserId); - } - else { - - apiClient.clearAuthenticationInfo(); - } - logger.log('returning instance from getOrAddApiClient'); return apiClient; } self.getOrCreateApiClient = function (serverId) { - var apiClient = self.getApiClient(serverId); - - if (apiClient) { - return apiClient; - } - var credentials = credentialProvider.credentials(); var servers = credentials.Servers.filter(function (s) { return stringEqualsIgnoreCase(s.Id, serverId); diff --git a/dashboard-ui/apiclient/sync/mediasync.js b/dashboard-ui/apiclient/sync/mediasync.js index 866e05822a..2470913455 100644 --- a/dashboard-ui/apiclient/sync/mediasync.js +++ b/dashboard-ui/apiclient/sync/mediasync.js @@ -4,7 +4,7 @@ var self = this; - self.sync = function (apiClient, serverInfo) { + self.sync = function (apiClient, serverInfo, options) { var deferred = DeferredBuilder.Deferred(); @@ -14,7 +14,7 @@ syncData(apiClient, serverInfo, false).done(function () { // Download new content - getNewMedia(apiClient, serverInfo).done(function () { + getNewMedia(apiClient, serverInfo, options).done(function () { // Do the second data sync syncData(apiClient, serverInfo, false).done(function () { @@ -160,7 +160,7 @@ return deferred.promise(); } - function getNewMedia(apiClient, serverInfo) { + function getNewMedia(apiClient, serverInfo, options) { Logger.log('Begin getNewMedia'); @@ -168,14 +168,14 @@ apiClient.getReadySyncItems(apiClient.deviceId()).done(function (jobItems) { - getNextNewItem(jobItems, 0, apiClient, serverInfo, deferred); + getNextNewItem(jobItems, 0, apiClient, serverInfo, options, deferred); }).fail(getOnFail(deferred)); return deferred.promise(); } - function getNextNewItem(jobItems, index, apiClient, serverInfo, deferred) { + function getNextNewItem(jobItems, index, apiClient, serverInfo, options, deferred) { var length = jobItems.length; @@ -185,12 +185,22 @@ return; } - getNewItem(jobItems[index], apiClient, serverInfo).done(function () { + var hasGoneNext = false; + var goNext = function () { - getNextNewItem(jobItems, index + 1, apiClient, serverInfo, deferred); - }).fail(function () { - getNextNewItem(jobItems, index + 1, apiClient, serverInfo, deferred); - }); + if (!hasGoneNext) { + hasGoneNext = true; + getNextNewItem(jobItems, index + 1, apiClient, serverInfo, options, deferred); + } + }; + + getNewItem(jobItems[index], apiClient, serverInfo).done(goNext).fail(goNext); + + options = options || {}; + if (options.enableBackgroundTransfer) { + // Give it 2 seconds, then move on + setTimeout(goNext, 2000); + } } function getNewItem(jobItem, apiClient, serverInfo) { @@ -317,6 +327,10 @@ downloadImage(apiClient, serverId, itemId, imageTag, imageType).done(function () { + // For the sake of simplicity, limit to one image + deferred.resolve(); + return; + getNextImage(index + 1, apiClient, localItem, deferred); }).fail(getOnFail(deferred)); diff --git a/dashboard-ui/apiclient/sync/serversync.js b/dashboard-ui/apiclient/sync/serversync.js index 4450910d91..b50fb491db 100644 --- a/dashboard-ui/apiclient/sync/serversync.js +++ b/dashboard-ui/apiclient/sync/serversync.js @@ -44,7 +44,7 @@ Logger.log("Creating ContentUploader to server: " + server.Id); var nextAction = function () { - syncOfflineUsers(server, deferred); + syncOfflineUsers(server, options, deferred); }; options = options || {}; @@ -71,7 +71,7 @@ }); } - function syncOfflineUsers(server, deferred) { + function syncOfflineUsers(server, options, deferred) { require(['offlineusersync'], function () { @@ -81,7 +81,7 @@ Logger.log("OfflineUserSync succeeded to server: " + server.Id); - syncMedia(server, deferred); + syncMedia(server, options, deferred); }).fail(function () { @@ -92,13 +92,13 @@ }); } - function syncMedia(server, deferred) { + function syncMedia(server, options, deferred) { require(['mediasync'], function () { var apiClient = connectionManager.getApiClient(server.Id); - new MediaBrowser.MediaSync().sync(apiClient, server).done(function () { + new MediaBrowser.MediaSync().sync(apiClient, server, options).done(function () { Logger.log("MediaSync succeeded to server: " + server.Id); diff --git a/dashboard-ui/bower_components/paper-button/.bower.json b/dashboard-ui/bower_components/paper-button/.bower.json index 84ea692b70..577fba83bc 100644 --- a/dashboard-ui/bower_components/paper-button/.bower.json +++ b/dashboard-ui/bower_components/paper-button/.bower.json @@ -1,6 +1,6 @@ { "name": "paper-button", - "version": "1.0.4", + "version": "1.0.5", "description": "Material design button", "authors": [ "The Polymer Authors" @@ -24,7 +24,8 @@ "polymer": "Polymer/polymer#^1.1.0", "paper-ripple": "polymerelements/paper-ripple#^1.0.0", "paper-material": "polymerelements/paper-material#^1.0.0", - "paper-behaviors": "polymerelements/paper-behaviors#^1.0.0" + "paper-behaviors": "polymerelements/paper-behaviors#^1.0.0", + "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0" }, "devDependencies": { "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0", @@ -36,11 +37,11 @@ "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0", "paper-styles": "polymerelements/paper-styles#^1.0.0" }, - "_release": "1.0.4", + "_release": "1.0.5", "_resolution": { "type": "version", - "tag": "v1.0.4", - "commit": "402fffc8bad25ea7c3135f2e5997ad00765a2d61" + "tag": "v1.0.5", + "commit": "e8367f8f0d77e420a75c8811bda9b0666b81ff8e" }, "_source": "git://github.com/PolymerElements/paper-button.git", "_target": "~1.0.1", diff --git a/dashboard-ui/bower_components/paper-button/bower.json b/dashboard-ui/bower_components/paper-button/bower.json index 2560658d9e..c5e28eee98 100644 --- a/dashboard-ui/bower_components/paper-button/bower.json +++ b/dashboard-ui/bower_components/paper-button/bower.json @@ -1,6 +1,6 @@ { "name": "paper-button", - "version": "1.0.4", + "version": "1.0.5", "description": "Material design button", "authors": [ "The Polymer Authors" @@ -24,7 +24,8 @@ "polymer": "Polymer/polymer#^1.1.0", "paper-ripple": "polymerelements/paper-ripple#^1.0.0", "paper-material": "polymerelements/paper-material#^1.0.0", - "paper-behaviors": "polymerelements/paper-behaviors#^1.0.0" + "paper-behaviors": "polymerelements/paper-behaviors#^1.0.0", + "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0" }, "devDependencies": { "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0", diff --git a/dashboard-ui/bower_components/paper-button/demo/index.html b/dashboard-ui/bower_components/paper-button/demo/index.html index 9b98fe27c8..253bb77ee0 100644 --- a/dashboard-ui/bower_components/paper-button/demo/index.html +++ b/dashboard-ui/bower_components/paper-button/demo/index.html @@ -92,12 +92,8 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN background: #eee; } - paper-button.ripple::shadow paper-ripple { - color: var(--paper-pink-a200); - } - - paper-button.ripple paper-ripple { - color: var(--paper-pink-a200); + paper-button.ripple { + --paper-button-ink-color: var(--paper-pink-a200); } diff --git a/dashboard-ui/bower_components/paper-button/paper-button.html b/dashboard-ui/bower_components/paper-button/paper-button.html index 29683d31a1..66bd137a01 100644 --- a/dashboard-ui/bower_components/paper-button/paper-button.html +++ b/dashboard-ui/bower_components/paper-button/paper-button.html @@ -12,6 +12,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN + @@ -93,12 +97,19 @@ Custom property | Description | Default user-select: none; cursor: pointer; z-index: 0; + padding: 0.7em 0.57em; @apply(--paper-button); } - .keyboard-focus { + :host([raised]) .keyboard-focus { font-weight: bold; + @apply(paper-button-raised-keyboard-focus); + } + + :host(:not([raised])) .keyboard-focus { + font-weight: bold; + @apply(paper-button-flat-keyboard-focus); } :host([disabled]) { @@ -114,24 +125,25 @@ Custom property | Description | Default display: none; } + paper-ripple { + color: var(--paper-button-ink-color); + } + paper-material { border-radius: inherit; + @apply(--layout-fit); } .content > ::content * { text-transform: inherit; } - - .content { - padding: 0.7em 0.57em - } - - - + + + diff --git a/dashboard-ui/bower_components/paper-button/test/paper-button.html b/dashboard-ui/bower_components/paper-button/test/paper-button.html index 797688cefa..a4acd90cec 100644 --- a/dashboard-ui/bower_components/paper-button/test/paper-button.html +++ b/dashboard-ui/bower_components/paper-button/test/paper-button.html @@ -54,10 +54,6 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN }, 1); }); - test('has aria role "button"', function() { - expect(button.getAttribute('role')).to.be.eql('button'); - }); - test('can be disabled imperatively', function() { button.disabled = true; expect(button.getAttribute('aria-disabled')).to.be.eql('true'); @@ -78,6 +74,21 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN MockInteractions.pressEnter(button); }); }); + + suite('', function() { + var button; + + setup(function() { + button = fixture('TrivialButton'); + }); + + test('has aria role "button"', function() { + expect(button.getAttribute('role')).to.be.eql('button'); + }); + + a11ySuite('TrivialButton'); + }); + diff --git a/dashboard-ui/bower_components/paper-ripple/.bower.json b/dashboard-ui/bower_components/paper-ripple/.bower.json index d289efd9cf..c9e9b86273 100644 --- a/dashboard-ui/bower_components/paper-ripple/.bower.json +++ b/dashboard-ui/bower_components/paper-ripple/.bower.json @@ -30,14 +30,14 @@ "web-component-tester": "*", "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" }, - "homepage": "https://github.com/polymerelements/paper-ripple", + "homepage": "https://github.com/PolymerElements/paper-ripple", "_release": "1.0.2", "_resolution": { "type": "version", "tag": "v1.0.2", "commit": "b546dbe6ad0b1f58cac80caec3136cf3232e12fc" }, - "_source": "git://github.com/polymerelements/paper-ripple.git", + "_source": "git://github.com/PolymerElements/paper-ripple.git", "_target": "^1.0.0", - "_originalSource": "polymerelements/paper-ripple" + "_originalSource": "PolymerElements/paper-ripple" } \ No newline at end of file diff --git a/dashboard-ui/cordova/localassetmanager.js b/dashboard-ui/cordova/localassetmanager.js index 36bb80b59a..dc1a7af265 100644 --- a/dashboard-ui/cordova/localassetmanager.js +++ b/dashboard-ui/cordova/localassetmanager.js @@ -492,7 +492,7 @@ }, function (value) { // on progress - Logger.log('download progress: ' + value); + //Logger.log('download progress: ' + value); }); }); diff --git a/dashboard-ui/css/notifications.css b/dashboard-ui/css/notifications.css index 5f7693685c..c252b1fd80 100644 --- a/dashboard-ui/css/notifications.css +++ b/dashboard-ui/css/notifications.css @@ -12,7 +12,6 @@ color: #fff; font-weight: 500; position: relative; - top: -8px; border-radius: 1000px; background: #444; line-height: 28px; diff --git a/dashboard-ui/dashboard.html b/dashboard-ui/dashboard.html index afef49d921..2fa24c1d0c 100644 --- a/dashboard-ui/dashboard.html +++ b/dashboard-ui/dashboard.html @@ -23,9 +23,9 @@
-
-

${HeaderServerInformation}

-
+
+

${HeaderServerInformation}

+

-
-

${HeaderActiveDevices}

+
+

${HeaderActiveDevices}

diff --git a/dashboard-ui/library.html b/dashboard-ui/library.html index 5ba5bd39f1..7df07c8a29 100644 --- a/dashboard-ui/library.html +++ b/dashboard-ui/library.html @@ -23,9 +23,11 @@
- - -
${LabelLastResult}
+ ${ButtonScanLibrary} +
+ +
${LabelLastResult}
+
diff --git a/dashboard-ui/notificationlist.html b/dashboard-ui/notificationlist.html index c6e1f9fd90..c22e5dc8e2 100644 --- a/dashboard-ui/notificationlist.html +++ b/dashboard-ui/notificationlist.html @@ -11,7 +11,7 @@
-
+
diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index beb84187f7..2e25b5fff9 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -280,6 +280,7 @@ tabs.addEventListener('iron-select', function () { var animateTab = !$.browser.safari; + animateTab = false; var selected = pages.selected; if (selected != null && animateTab) { var newValue = this.selected; diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index fc64366412..dfac3130d8 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -28,7 +28,7 @@ html += ''; - //html += '
0
'; + html += '
0
'; if (!showUserAtTop()) { html += ''; @@ -143,20 +143,20 @@ function updateViewMenuBarHeadroom(page, viewMenuBar) { - if (page.classList.contains('libraryPage')) { - // Don't like this timeout at all but if headroom is activated during the page events it will jump and flicker on us - setTimeout(reEnableHeadroom, 700); - } else { - viewMenuBar.classList.add('headroomDisabled'); - } + //if (page.classList.contains('libraryPage')) { + // // Don't like this timeout at all but if headroom is activated during the page events it will jump and flicker on us + // setTimeout(reEnableHeadroom, 700); + //} else { + // viewMenuBar.classList.add('headroomDisabled'); + //} } function reEnableHeadroom() { - var headroomDisabled = document.querySelectorAll('.headroomDisabled'); - for (var i = 0, length = headroomDisabled.length; i < length; i++) { - headroomDisabled[i].classList.remove('headroomDisabled'); - } + //var headroomDisabled = document.querySelectorAll('.headroomDisabled'); + //for (var i = 0, length = headroomDisabled.length; i < length; i++) { + // headroomDisabled[i].classList.remove('headroomDisabled'); + //} } function getItemHref(item, context) { @@ -815,14 +815,14 @@ }); - pageClassOn('pagebeforehide', 'page', function () { + //pageClassOn('pagebeforehide', 'page', function () { - var headroomEnabled = document.querySelectorAll('.headroomEnabled'); - for (var i = 0, length = headroomEnabled.length; i < length; i++) { - headroomEnabled[i].classList.add('headroomDisabled'); - } + // var headroomEnabled = document.querySelectorAll('.headroomEnabled'); + // for (var i = 0, length = headroomEnabled.length; i < length; i++) { + // headroomEnabled[i].classList.add('headroomDisabled'); + // } - }); + //}); function onPageBeforeShowDocumentReady(page) { diff --git a/dashboard-ui/scripts/localsync.js b/dashboard-ui/scripts/localsync.js index 963f04a84f..a1c8909f97 100644 --- a/dashboard-ui/scripts/localsync.js +++ b/dashboard-ui/scripts/localsync.js @@ -20,6 +20,13 @@ require(['multiserversync'], function () { lastStart = new Date().getTime(); + + options = options || {}; + + if ($.browser.safari) { + options.enableBackgroundTransfer = true; + } + syncPromise = new MediaBrowser.MultiServerSync(ConnectionManager).sync(options).done(function () { syncPromise = null; diff --git a/dashboard-ui/scripts/notifications.js b/dashboard-ui/scripts/notifications.js index 9596e378e2..37fb47eb86 100644 --- a/dashboard-ui/scripts/notifications.js +++ b/dashboard-ui/scripts/notifications.js @@ -121,54 +121,41 @@ function getNotificationHtml(notification) { - var html = ''; + var itemHtml = ''; - var cssClass = notification.IsRead ? "flyoutNotification" : "flyoutNotification unreadFlyoutNotification"; - - html += ''; - - return html; - } - - function getImageHtml(notification) { - - if (notification.Level == "Error") { - - return '
'; - - } - if (notification.Level == "Warning") { - - return '
'; + itemHtml += ''; + if (notification.Url) { + itemHtml += '
'; } - return '
'; - + return itemHtml; } window.Notifications = new notifications(); @@ -187,6 +174,12 @@ $(apiClient).off("websocketmessage", onWebSocketMessage).on("websocketmessage", onWebSocketMessage); } + $(document).on('headercreated', function (e, apiClient) { + $('.btnNotifications').on('click', function () { + Dashboard.navigate('notificationlist.html'); + }); + }); + Dashboard.ready(function () { if (window.ApiClient) { diff --git a/dashboard-ui/thirdparty/paper-button-style.css b/dashboard-ui/thirdparty/paper-button-style.css index 874dc9f431..aa2f8699d8 100644 --- a/dashboard-ui/thirdparty/paper-button-style.css +++ b/dashboard-ui/thirdparty/paper-button-style.css @@ -388,7 +388,7 @@ paper-menu-item { } .ui-body-b paper-checkbox #checkbox.paper-checkbox { - border-color: #eee; + border-color: #dedede; } .ui-body-a paper-checkbox #checkbox.checked.paper-checkbox { diff --git a/dashboard-ui/vulcanize-out.html b/dashboard-ui/vulcanize-out.html index b66d52b22b..a8fca46a5f 100644 --- a/dashboard-ui/vulcanize-out.html +++ b/dashboard-ui/vulcanize-out.html @@ -7199,6 +7199,310 @@ this.fire('dom-change'); ]; + + + - - - @@ -13784,12 +13784,19 @@ is separate from validation, and `allowed-pattern` does not affect how the input user-select: none; cursor: pointer; z-index: 0; + padding: 0.7em 0.57em; @apply(--paper-button); } - .keyboard-focus { + :host([raised]) .keyboard-focus { font-weight: bold; + @apply(paper-button-raised-keyboard-focus); + } + + :host(:not([raised])) .keyboard-focus { + font-weight: bold; + @apply(paper-button-flat-keyboard-focus); } :host([disabled]) { @@ -13805,24 +13812,25 @@ is separate from validation, and `allowed-pattern` does not affect how the input display: none; } + paper-ripple { + color: var(--paper-button-ink-color); + } + paper-material { border-radius: inherit; + @apply(--layout-fit); } .content > ::content * { text-transform: inherit; } - - .content { - padding: 0.7em 0.57em - } - - - + + +