diff --git a/dashboard-ui/advanced.html b/dashboard-ui/advanced.html index af992bdefb..42a73ec836 100644 --- a/dashboard-ui/advanced.html +++ b/dashboard-ui/advanced.html @@ -78,11 +78,8 @@

diff --git a/dashboard-ui/apiclient/apiclient.js b/dashboard-ui/apiclient/apiclient.js index e4356264de..865e626739 100644 --- a/dashboard-ui/apiclient/apiclient.js +++ b/dashboard-ui/apiclient/apiclient.js @@ -501,17 +501,17 @@ Size: byteSize }); - var now = new Date().getTime(); - var deferred = DeferredBuilder.Deferred(); + var now = new Date().getTime(); + self.get(url).done(function () { - var responseTime = new Date().getTime() - now; - var bytesPerSecond = byteSize / responseTime; - bytesPerSecond *= 1000; + var responseTimeSeconds = (new Date().getTime() - now) / 1000; + var bytesPerSecond = byteSize / responseTimeSeconds; + var bitrate = Math.round(bytesPerSecond * 8); - deferred.resolveWith(null, [bytesPerSecond]); + deferred.resolveWith(null, [bitrate]); }).fail(function () { diff --git a/dashboard-ui/autoorganizetv.html b/dashboard-ui/autoorganizetv.html index c1a473b864..645601295f 100644 --- a/dashboard-ui/autoorganizetv.html +++ b/dashboard-ui/autoorganizetv.html @@ -24,14 +24,12 @@
  • - -
    - -
    - + +
    ${LabelWatchFolderHelp}
    +
  • diff --git a/dashboard-ui/bower_components/iron-meta/.bower.json b/dashboard-ui/bower_components/iron-meta/.bower.json index 8119ebcf41..9e650790be 100644 --- a/dashboard-ui/bower_components/iron-meta/.bower.json +++ b/dashboard-ui/bower_components/iron-meta/.bower.json @@ -25,14 +25,14 @@ "web-component-tester": "*", "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" }, - "homepage": "https://github.com/polymerelements/iron-meta", + "homepage": "https://github.com/PolymerElements/iron-meta", "_release": "1.0.3", "_resolution": { "type": "version", "tag": "v1.0.3", "commit": "91529259262b0d8f33fed44bc3fd47aedf35cb04" }, - "_source": "git://github.com/polymerelements/iron-meta.git", + "_source": "git://github.com/PolymerElements/iron-meta.git", "_target": "^1.0.0", - "_originalSource": "polymerelements/iron-meta" + "_originalSource": "PolymerElements/iron-meta" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/polymer/.bower.json b/dashboard-ui/bower_components/polymer/.bower.json index 1c882a78da..18b1ec8ec3 100644 --- a/dashboard-ui/bower_components/polymer/.bower.json +++ b/dashboard-ui/bower_components/polymer/.bower.json @@ -1,6 +1,6 @@ { "name": "polymer", - "version": "1.1.2", + "version": "1.1.3", "main": [ "polymer.html" ], @@ -25,11 +25,11 @@ }, "private": true, "homepage": "https://github.com/Polymer/polymer", - "_release": "1.1.2", + "_release": "1.1.3", "_resolution": { "type": "version", - "tag": "v1.1.2", - "commit": "9b0a25e347404ac164bc610bbd2ccbc91b6799b2" + "tag": "v1.1.3", + "commit": "fb2b93bf2f5058027c63a50fda79b130388b6e15" }, "_source": "git://github.com/Polymer/polymer.git", "_target": "^1.0.0", diff --git a/dashboard-ui/bower_components/polymer/bower.json b/dashboard-ui/bower_components/polymer/bower.json index 9a625e55cc..e47a52303e 100644 --- a/dashboard-ui/bower_components/polymer/bower.json +++ b/dashboard-ui/bower_components/polymer/bower.json @@ -1,6 +1,6 @@ { "name": "polymer", - "version": "1.1.2", + "version": "1.1.3", "main": [ "polymer.html" ], diff --git a/dashboard-ui/bower_components/polymer/polymer-micro.html b/dashboard-ui/bower_components/polymer/polymer-micro.html index c5ad27c6e9..d5bccbe804 100644 --- a/dashboard-ui/bower_components/polymer/polymer-micro.html +++ b/dashboard-ui/bower_components/polymer/polymer-micro.html @@ -56,10 +56,10 @@ prototype = {}; } var factory = desugar(prototype); prototype = factory.prototype; -var options = { -prototype: prototype, -extends: prototype.extends -}; +var options = { prototype: prototype }; +if (prototype.extends) { +options.extends = prototype.extends; +} Polymer.telemetry._registrate(prototype); document.registerElement(prototype.is, options); return factory; @@ -576,7 +576,7 @@ debouncer.stop(); } } }); -Polymer.version = '1.1.2'; +Polymer.version = '1.1.3'; Polymer.Base._addFeature({ _registerFeatures: function () { this._prepIs(); diff --git a/dashboard-ui/bower_components/polymer/polymer.html b/dashboard-ui/bower_components/polymer/polymer.html index d9d046c2f3..3cc59e8882 100644 --- a/dashboard-ui/bower_components/polymer/polymer.html +++ b/dashboard-ui/bower_components/polymer/polymer.html @@ -687,12 +687,12 @@ gd = gobj[dep]; if (gd && gd[name]) { gd[name] = (gd[name] || 1) - 1; gd._count = (gd._count || 1) - 1; -} if (gd._count === 0) { node.removeEventListener(dep, this.handleNative); } } } +} node.removeEventListener(evType, handler); }, register: function (recog) { diff --git a/dashboard-ui/cinemamodeconfiguration.html b/dashboard-ui/cinemamodeconfiguration.html index 0a2b3cc2f7..28ec4ffec9 100644 --- a/dashboard-ui/cinemamodeconfiguration.html +++ b/dashboard-ui/cinemamodeconfiguration.html @@ -53,10 +53,10 @@
  • -
    - +
    + +
    -
    ${LabelCustomIntrosPathHelp}
  • diff --git a/dashboard-ui/cordova/android/androidcredentials.js b/dashboard-ui/cordova/android/androidcredentials.js index 7e6e744e4b..24ef6f2439 100644 --- a/dashboard-ui/cordova/android/androidcredentials.js +++ b/dashboard-ui/cordova/android/androidcredentials.js @@ -43,10 +43,8 @@ function sendRequest(request) { - var method = request.type || "GET"; - // For now, we can only handle json responses - if (request.dataType || method == "GET") { + if (request.dataType) { if (request.dataType != 'json') { return baseAjaxMethod(request); } @@ -69,6 +67,8 @@ request.headers.accept = 'application/json'; } + var method = request.type || "GET"; + var javaRequest = { Method: method, Url: request.url, @@ -131,11 +131,54 @@ return error; } + function getDownloadSpeed(bytes, url) { + + var deferred = DeferredBuilder.Deferred(); + + ApiClientBridge.getDownloadSpeed(bytes, url); + + Events.on(AndroidAjax, 'downloadspeedresponse', function (e, response) { + + Events.off(AndroidAjax, 'downloadspeedresponse'); + + if (response) { + + deferred.resolveWith(null, [response]); + } + else { + + // Need to mimic the jquery ajax error response + deferred.reject(); + } + + }); + + return deferred.promise(); + } + + function initApiClient(newApiClient) { + newApiClient.getDownloadSpeed = function (bytes) { + return getDownloadSpeed(bytes, newApiClient.getUrl('Playback/BitrateTest', { + api_key: newApiClient.accessToken(), + Size: bytes + })); + }; + } + + Events.on(ConnectionManager, 'apiclientcreated', function (e, newApiClient) { + + initApiClient(newApiClient); + }); + Events.on(ConnectionManager.credentialProvider(), 'credentialsupdated', updateCredentials); updateCredentials(); initNativeConnectionManager(); + if (window.ApiClient) { + initApiClient(window.ApiClient); + } + window.AndroidAjax = { onResponse: function (id, response) { @@ -145,6 +188,10 @@ onError: function (id, response) { Events.trigger(AndroidAjax, 'response' + id, [false, response]); + }, + onDownloadSpeedResponse: function (response) { + + Events.trigger(AndroidAjax, 'downloadspeedresponse', [response]); } }; diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index 9674e24048..8367cd2f58 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -430,6 +430,10 @@ h1 a:hover { margin: -10px 0 0 -10px; } +fieldset { + border: none; +} + input:not(.paper-input):not(.likePaperText):not([type='checkbox']):not([type='radio']):not([type='file']) { -webkit-appearance: none; -webkit-font-smoothing: antialiased; @@ -464,6 +468,7 @@ input:not(.paper-input):not(.likePaperText):not([type='checkbox']):not([type='ra color: #000; margin: 0 0 3px 0; border-radius: 4px; + display: block; } select { @@ -487,6 +492,10 @@ select { text-align: center; } + select:not([data-inline='true']) { + display: block; + } + .ui-page-theme-b select { border-color: #1f1f1f; background: #373737; @@ -783,7 +792,7 @@ paper-input + .fieldDescription { } .background-theme-a { - background-color: #f5f5f5; + background-color: #f7f7f7; } .ui-page-theme-a .content-secondary { diff --git a/dashboard-ui/device.html b/dashboard-ui/device.html index dda57c6972..eb429b7df1 100644 --- a/dashboard-ui/device.html +++ b/dashboard-ui/device.html @@ -29,11 +29,8 @@
    ${LabelCustomDeviceDisplayNameHelp}
  • diff --git a/dashboard-ui/devicesupload.html b/dashboard-ui/devicesupload.html index cd73f0ccc9..fb782f9f0e 100644 --- a/dashboard-ui/devicesupload.html +++ b/dashboard-ui/devicesupload.html @@ -28,14 +28,11 @@ -

    +
    -
    +
    ${OptionTVMovies}

    - +
    ${LabelRecordingPathHelp}
    diff --git a/dashboard-ui/metadataadvanced.html b/dashboard-ui/metadataadvanced.html index ed9ff773e4..ef33dcefad 100644 --- a/dashboard-ui/metadataadvanced.html +++ b/dashboard-ui/metadataadvanced.html @@ -21,12 +21,10 @@
    '; } - var elem = $('#items', page).html(html).trigger('create'); + var elem = $('#items', page).html(html); $('.btnDeleteTimer', elem).on('click', function () { diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index 03d8381088..b5dae1af50 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -992,7 +992,7 @@ }; }; - var lastBitrateDetect = 0; + self.lastBitrateDetect = 0; self.playInternal = function (item, startPosition, callback) { @@ -1014,14 +1014,14 @@ return; } - if (item.MediaType == 'Video' && AppSettings.enableAutomaticBitrateDetection() && (new Date().getTime() - lastBitrateDetect) > 1000) { + if (item.MediaType == 'Video' && AppSettings.enableAutomaticBitrateDetection() && (new Date().getTime() - self.lastBitrateDetect) > 300000) { Dashboard.showModalLoadingMsg(); ApiClient.detectBitrate().done(function (bitrate) { Logger.log('Max bitrate auto detected to ' + bitrate); - lastBitrateDetect = new Date().getTime(); + self.lastBitrateDetect = new Date().getTime(); AppSettings.maxStreamingBitrate(bitrate); playOnDeviceProfileCreated(self.getDeviceProfile(), item, startPosition, callback); @@ -1900,9 +1900,16 @@ window.MediaPlayer = new mediaPlayer(); + function onConnectionChange() { + window.MediaPlayer.lastBitrateDetect = 0; + } + Dashboard.ready(function () { window.MediaController.registerPlayer(window.MediaPlayer); window.MediaController.setActivePlayer(window.MediaPlayer, window.MediaPlayer.getTargets()[0]); + + Events.on(ConnectionManager, 'localusersignedin', onConnectionChange); + Events.on(ConnectionManager, 'localusersignedout', onConnectionChange); }); diff --git a/dashboard-ui/scripts/moviecollections.js b/dashboard-ui/scripts/moviecollections.js index 56f0bfc2fd..6ef9e72439 100644 --- a/dashboard-ui/scripts/moviecollections.js +++ b/dashboard-ui/scripts/moviecollections.js @@ -69,8 +69,6 @@ })).trigger('create'); - var trigger = false; - if (result.TotalRecordCount) { var context = getParameterByName('context'); @@ -82,7 +80,6 @@ context: context, sortBy: query.SortBy }); - trigger = true; } else if (view == "Poster") { html = LibraryBrowser.getPosterViewHtml({ @@ -140,10 +137,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - if (trigger) { - $(elem).trigger('create'); - } - $('.btnNextPage', page).on('click', function () { query.StartIndex += query.Limit; reloadItems(page); diff --git a/dashboard-ui/scripts/moviegenres.js b/dashboard-ui/scripts/moviegenres.js index 24ded79b8e..e797632ef1 100644 --- a/dashboard-ui/scripts/moviegenres.js +++ b/dashboard-ui/scripts/moviegenres.js @@ -60,15 +60,12 @@ })).trigger('create'); - var trigger = false; - if (view == "List") { html = LibraryBrowser.getListViewHtml({ items: result.Items, sortBy: query.SortBy }); - trigger = true; } else if (view == "Thumb") { html = LibraryBrowser.getPosterViewHtml({ @@ -120,10 +117,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - if (trigger) { - $(elem).trigger('create'); - } - $('.btnNextPage', page).on('click', function () { query.StartIndex += query.Limit; reloadItems(page); diff --git a/dashboard-ui/scripts/musicalbumartists.js b/dashboard-ui/scripts/musicalbumartists.js index 300230fdcc..8d37e53f99 100644 --- a/dashboard-ui/scripts/musicalbumartists.js +++ b/dashboard-ui/scripts/musicalbumartists.js @@ -67,7 +67,6 @@ page.querySelector('.listTopPaging').innerHTML = pagingHtml; updateFilterControls(page, viewPanel); - var trigger = false; if (view == "List") { @@ -76,7 +75,6 @@ context: 'music', sortBy: query.SortBy }); - trigger = true; } else if (view == "Poster") { html = LibraryBrowser.getPosterViewHtml({ @@ -108,10 +106,6 @@ elem.innerHTML = html + pagingHtml; ImageLoader.lazyChildren(elem); - if (trigger) { - $(elem).trigger('create'); - } - $('.btnNextPage', page).on('click', function () { query.StartIndex += query.Limit; reloadItems(page, viewPanel); diff --git a/dashboard-ui/scripts/musicalbums.js b/dashboard-ui/scripts/musicalbums.js index fe35da64ac..bfbfc176c3 100644 --- a/dashboard-ui/scripts/musicalbums.js +++ b/dashboard-ui/scripts/musicalbums.js @@ -68,7 +68,6 @@ page.querySelector('.listTopPaging').innerHTML = pagingHtml; updateFilterControls(page, viewPanel); - var trigger = false; if (view == "Poster") { html = LibraryBrowser.getPosterViewHtml({ @@ -102,7 +101,6 @@ context: 'music', sortBy: query.SortBy }); - trigger = true; } else if (view == "Timeline") { html = LibraryBrowser.getPosterViewHtml({ @@ -120,10 +118,6 @@ elem.innerHTML = html + pagingHtml; ImageLoader.lazyChildren(elem); - if (trigger) { - $(elem).trigger('create'); - } - $('.btnNextPage', page).on('click', function () { query.StartIndex += query.Limit; reloadItems(page, viewPanel); diff --git a/dashboard-ui/scripts/musicartists.js b/dashboard-ui/scripts/musicartists.js index 22137ef9ae..fe2510c395 100644 --- a/dashboard-ui/scripts/musicartists.js +++ b/dashboard-ui/scripts/musicartists.js @@ -67,7 +67,6 @@ page.querySelector('.listTopPaging').innerHTML = pagingHtml; updateFilterControls(page, viewPanel); - var trigger = false; if (view == "List") { @@ -76,7 +75,6 @@ context: 'music', sortBy: query.SortBy }); - trigger = true; } else if (view == "Poster") { html = LibraryBrowser.getPosterViewHtml({ @@ -108,10 +106,6 @@ elem.innerHTML = html + pagingHtml; ImageLoader.lazyChildren(elem); - if (trigger) { - $(elem).trigger('create'); - } - $('.btnNextPage', page).on('click', function () { query.StartIndex += query.Limit; reloadItems(page, viewPanel); diff --git a/dashboard-ui/scripts/musicgenres.js b/dashboard-ui/scripts/musicgenres.js index 7944a29b12..750de78b03 100644 --- a/dashboard-ui/scripts/musicgenres.js +++ b/dashboard-ui/scripts/musicgenres.js @@ -59,7 +59,7 @@ addLayoutButton: true, currentLayout: view - })).trigger('create'); + })); if (view == "Thumb") { html = LibraryBrowser.getPosterViewHtml({ diff --git a/dashboard-ui/scripts/nowplayingpage.js b/dashboard-ui/scripts/nowplayingpage.js index 1a21418711..ba06502209 100644 --- a/dashboard-ui/scripts/nowplayingpage.js +++ b/dashboard-ui/scripts/nowplayingpage.js @@ -54,7 +54,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - $(elem).trigger('create'); } function selectCurrentChapter(elem, positionTicks) { @@ -699,7 +698,6 @@ var itemsContainer = page.querySelector('.playlist'); itemsContainer.innerHTML = html; ImageLoader.lazyChildren(itemsContainer); - $(itemsContainer).trigger('create'); } function onListItemClick(e) { diff --git a/dashboard-ui/scripts/playlistedit.js b/dashboard-ui/scripts/playlistedit.js index b9f946f35e..136a679d44 100644 --- a/dashboard-ui/scripts/playlistedit.js +++ b/dashboard-ui/scripts/playlistedit.js @@ -75,7 +75,7 @@ var elem = page.querySelector('#childrenContent .itemsContainer'); elem.innerHTML = html; - $(elem).trigger('create'); + ImageLoader.lazyChildren(elem); $(elem).off('needsrefresh').on('needsrefresh', function () { diff --git a/dashboard-ui/scripts/playlists.js b/dashboard-ui/scripts/playlists.js index 979a6f390a..d427c982f3 100644 --- a/dashboard-ui/scripts/playlists.js +++ b/dashboard-ui/scripts/playlists.js @@ -73,9 +73,7 @@ addLayoutButton: true, currentLayout: view - })).trigger('create'); - - var trigger = false; + })); if (result.TotalRecordCount) { @@ -85,7 +83,6 @@ items: result.Items, sortBy: query.SortBy }); - trigger = true; } else if (view == "PosterCard") { html = LibraryBrowser.getPosterViewHtml({ @@ -143,10 +140,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - if (trigger) { - $(elem).trigger('create'); - } - $('.btnNextPage', page).on('click', function () { query.StartIndex += query.Limit; reloadItems(page); diff --git a/dashboard-ui/scripts/secondaryitems.js b/dashboard-ui/scripts/secondaryitems.js index 7fb8bfb62d..9a5a9b9d87 100644 --- a/dashboard-ui/scripts/secondaryitems.js +++ b/dashboard-ui/scripts/secondaryitems.js @@ -104,7 +104,6 @@ }); page.querySelector('.listTopPaging').innerHTML = pagingHtml; - var trigger = false; if (query.IncludeItemTypes == "Audio") { @@ -114,7 +113,6 @@ defaultAction: 'playallfromhere', smallIcon: true }) + ''; - trigger = true; } else { var posterOptions = { @@ -148,10 +146,6 @@ elem.innerHTML = html + pagingHtml; ImageLoader.lazyChildren(elem); - if (trigger) { - $(elem).trigger('create'); - } - $('.btnNextPage', page).on('click', function () { query.StartIndex += query.Limit; reloadItems(page, parentItem); diff --git a/dashboard-ui/scripts/selectserver.js b/dashboard-ui/scripts/selectserver.js index b612b73d14..c246b4e66d 100644 --- a/dashboard-ui/scripts/selectserver.js +++ b/dashboard-ui/scripts/selectserver.js @@ -89,7 +89,7 @@ html += servers.map(getServerHtml).join(''); - var elem = $('.serverList', page).html(html).trigger('create'); + var elem = $('.serverList', page).html(html); $('.lnkServer', elem).on('click', function () { @@ -286,7 +286,7 @@ var html = list.map(getPendingInviteHtml).join(''); - var elem = $('.invitationList', page).html(html).trigger('create'); + var elem = $('.invitationList', page).html(html); $('.btnInviteMenu', elem).on('click', function () { showPendingInviteMenu(this); diff --git a/dashboard-ui/scripts/syncsettings.js b/dashboard-ui/scripts/syncsettings.js index 8dc1309a0f..427301a347 100644 --- a/dashboard-ui/scripts/syncsettings.js +++ b/dashboard-ui/scripts/syncsettings.js @@ -5,7 +5,7 @@ $('#txtSyncTempPath', page).val(config.TemporaryPath || ''); $('#txtUploadSpeedLimit', page).val((config.UploadSpeedLimitBytes / 1000000) || ''); $('#txtCpuCoreLimit', page).val(config.TranscodingCpuCoreLimit); - $('#chkEnableFullSpeedConversion', page).checked(config.EnableFullSpeedTranscoding).checkboxradio('refresh'); + $('#chkEnableFullSpeedConversion', page).checked(config.EnableFullSpeedTranscoding); Dashboard.hideLoadingMsg(); } diff --git a/dashboard-ui/scripts/wizardlivetvguide.js b/dashboard-ui/scripts/wizardlivetvguide.js index e0743f3e4c..67e9f83d92 100644 --- a/dashboard-ui/scripts/wizardlivetvguide.js +++ b/dashboard-ui/scripts/wizardlivetvguide.js @@ -50,7 +50,6 @@ var elem = page.querySelector('.providerTemplate'); elem.innerHTML = Globalize.translateDocument(html); - $(elem).trigger('create'); init(page, type); }); diff --git a/dashboard-ui/syncsettings.html b/dashboard-ui/syncsettings.html index 46752fa0be..8136ba892e 100644 --- a/dashboard-ui/syncsettings.html +++ b/dashboard-ui/syncsettings.html @@ -19,30 +19,24 @@