diff --git a/dashboard-ui/apiclient/apiclient.js b/dashboard-ui/apiclient/apiclient.js index e18b363929..db1f86f56b 100644 --- a/dashboard-ui/apiclient/apiclient.js +++ b/dashboard-ui/apiclient/apiclient.js @@ -132,12 +132,21 @@ Events.trigger(self, 'requestfail', [ { url: this.url, - type: this.type, status: e.status, errorCode: e.getResponseHeader("X-Application-Error-Code") }]); } + function onFetchFail(url, response) { + + Events.trigger(self, 'requestfail', [ + { + url: url, + status: response.status, + errorCode: response.headers ? response.headers["X-Application-Error-Code"] : null + }]); + } + function onRetryRequestFail(request) { Events.trigger(self, 'requestfail', [ @@ -195,6 +204,13 @@ return deferred.promise(); }; + function getFetchPromise(request) { + return fetch(request.url, { + headers: request.headers, + method: request.type + }); + } + /** * Wraps around jQuery ajax methods to add additional info to the request. */ @@ -213,28 +229,41 @@ if (self.enableAutomaticNetworking === false || request.type != "GET") { logger.log('Requesting url without automatic networking: ' + request.url); - return fetch(request.url, { - headers: request.headers, - method: request.type + return new Promise(function (resolve, reject) { + + getFetchPromise(request).then(function (response) { + + if (response.status < 400) { + resolve(response); + } else { + onFetchFail(request.url, response); + reject(); + } + + }, function () { + onFetchFail(request.url, {}); + reject(); + }); }); } - var deferred = DeferredBuilder.Deferred(); - self.ajaxWithFailover(request, deferred, true); - return deferred.promise(); + return new Promise(function (resolve, reject) { + + self.fetchWithFailover(request, resolve, reject, true); + }); }; self.fetchJSON = function (url, includeAuthorization) { return self.fetch({ - + url: url, type: 'GET', headers: { accept: 'application/json' } - }, includeAuthorization).then(function(response) { + }, includeAuthorization).then(function (response) { return response.json(); }); }; @@ -318,6 +347,56 @@ return deferred.promise(); } + self.fetchWithFailover = function (request, resolve, reject, enableReconnection) { + + logger.log("Requesting " + request.url); + + request.timeout = 30000; + + getFetchPromise(request).then(function (response) { + + if (response.status < 400) { + resolve(response); + } else { + onFetchFail(request.url, response); + reject(); + } + + }, function () { + + logger.log("Request failed to " + request.url); + + // http://api.jquery.com/jQuery.ajax/ + if (enableReconnection) { + + logger.log("Attempting reconnection"); + + var previousServerAddress = self.serverAddress(); + + tryReconnect().done(function () { + + logger.log("Reconnect succeesed"); + request.url = request.url.replace(previousServerAddress, self.serverAddress()); + + self.fetchWithFailover(request, resolve, reject, false); + + }).fail(function () { + + logger.log("Reconnect failed"); + onFetchFail(request.url, {}); + reject(); + + }); + } else { + + logger.log("Reporting request failure"); + + onFetchFail(request.url, {}); + reject(); + } + }); + }; + self.ajaxWithFailover = function (request, deferred, enableReconnection) { logger.log("Requesting " + request.url); @@ -1170,7 +1249,7 @@ client: app }); - return self.getJSON(url); + return self.fetchJSON(url); }; self.updateDisplayPreferences = function (id, obj, userId, app) { diff --git a/dashboard-ui/bower_components/eventie/.bower.json b/dashboard-ui/bower_components/eventie/.bower.json index 6b5b662fdc..917d217ea8 100644 --- a/dashboard-ui/bower_components/eventie/.bower.json +++ b/dashboard-ui/bower_components/eventie/.bower.json @@ -30,6 +30,6 @@ "commit": "14d2ca3df97da64c820829a8310f9198fbafbcfa" }, "_source": "git://github.com/desandro/eventie.git", - "_target": "~1.0.3", + "_target": "^1", "_originalSource": "eventie" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/iron-behaviors/.bower.json b/dashboard-ui/bower_components/iron-behaviors/.bower.json index b5f528b092..5d74fa6525 100644 --- a/dashboard-ui/bower_components/iron-behaviors/.bower.json +++ b/dashboard-ui/bower_components/iron-behaviors/.bower.json @@ -29,14 +29,14 @@ "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" }, "ignore": [], - "homepage": "https://github.com/PolymerElements/iron-behaviors", + "homepage": "https://github.com/polymerelements/iron-behaviors", "_release": "1.0.11", "_resolution": { "type": "version", "tag": "v1.0.11", "commit": "084fbc7f60343d717bb2208f350774f4c9899777" }, - "_source": "git://github.com/PolymerElements/iron-behaviors.git", + "_source": "git://github.com/polymerelements/iron-behaviors.git", "_target": "^1.0.0", - "_originalSource": "PolymerElements/iron-behaviors" + "_originalSource": "polymerelements/iron-behaviors" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/iron-selector/.bower.json b/dashboard-ui/bower_components/iron-selector/.bower.json index ebb18c5b7b..52d44c1907 100644 --- a/dashboard-ui/bower_components/iron-selector/.bower.json +++ b/dashboard-ui/bower_components/iron-selector/.bower.json @@ -36,7 +36,7 @@ "tag": "v1.0.8", "commit": "e9a66727f3da0446f04956d4e4f1dcd51cdec2ff" }, - "_source": "git://github.com/polymerelements/iron-selector.git", + "_source": "git://github.com/PolymerElements/iron-selector.git", "_target": "^1.0.0", - "_originalSource": "polymerelements/iron-selector" + "_originalSource": "PolymerElements/iron-selector" } \ No newline at end of file diff --git a/dashboard-ui/components/imageuploader/imageuploader.js b/dashboard-ui/components/imageuploader/imageuploader.js index c63ed51644..3a7b584407 100644 --- a/dashboard-ui/components/imageuploader/imageuploader.js +++ b/dashboard-ui/components/imageuploader/imageuploader.js @@ -11,12 +11,12 @@ switch (evt.target.error.code) { case evt.target.error.NOT_FOUND_ERR: - Dashboard.showError(Globalize.translate('MessageFileNotFound')); + Dashboard.alert(Globalize.translate('MessageFileNotFound')); break; case evt.target.error.ABORT_ERR: break; // noop default: - Dashboard.showError(Globalize.translate('MessageFileReadError')); + Dashboard.alert(Globalize.translate('MessageFileReadError')); break; }; } diff --git a/dashboard-ui/components/medialibrarycreator/medialibrarycreator.js b/dashboard-ui/components/medialibrarycreator/medialibrarycreator.js index cbeb952c65..69faa78d4e 100644 --- a/dashboard-ui/components/medialibrarycreator/medialibrarycreator.js +++ b/dashboard-ui/components/medialibrarycreator/medialibrarycreator.js @@ -31,7 +31,7 @@ }).fail(function () { - Dashboard.showError(Globalize.translate('ErrorAddingMediaPathToVirtualFolder')); + Dashboard.alert(Globalize.translate('ErrorAddingMediaPathToVirtualFolder')); }); return false; diff --git a/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js b/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js index ab6f66c87c..1075ab8a0b 100644 --- a/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js +++ b/dashboard-ui/components/medialibraryeditor/medialibraryeditor.js @@ -17,7 +17,7 @@ }).fail(function () { - Dashboard.showError(Globalize.translate('ErrorAddingMediaPathToVirtualFolder')); + Dashboard.alert(Globalize.translate('ErrorAddingMediaPathToVirtualFolder')); }); } @@ -43,7 +43,7 @@ }).fail(function () { - Dashboard.showError(Globalize.translate('DefaultErrorMessage')); + Dashboard.alert(Globalize.translate('DefaultErrorMessage')); }); } }); diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index e3072b7352..57a71d06c6 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -1562,14 +1562,6 @@ progress { user-drag: none; } -.nativeApp input { - -webkit-user-select: auto !important; - -khtml-user-select: auto !important; - -moz-user-select: auto !important; - -ms-user-select: auto !important; - user-select: auto !important; -} - .supporterMembershipDisabled .tabSupporterMembership { display: none; } diff --git a/dashboard-ui/devices/android/android.css b/dashboard-ui/devices/android/android.css index 86aaf83066..f4b0be5110 100644 --- a/dashboard-ui/devices/android/android.css +++ b/dashboard-ui/devices/android/android.css @@ -3,7 +3,7 @@ } .viewMenuBar.semiTransparent { - background-color: rgba(15, 15, 15, .35); + background-color: rgba(15, 15, 15, .3); } .background-theme-b, paper-dialog.background-theme-b { diff --git a/dashboard-ui/scripts/dashboardpage.js b/dashboard-ui/scripts/dashboardpage.js index 1753bfa583..6aa6497095 100644 --- a/dashboard-ui/scripts/dashboardpage.js +++ b/dashboard-ui/scripts/dashboardpage.js @@ -1276,7 +1276,7 @@ $(document).on('pageshow', "#dashboardPage", DashboardPage.onPageShow).on('pageb function dismissWelcome(page, userId) { - ApiClient.getDisplayPreferences('dashboard', userId, 'dashboard').done(function (result) { + ApiClient.getDisplayPreferences('dashboard', userId, 'dashboard').then(function (result) { result.CustomPrefs[welcomeTourKey] = welcomeDismissValue; ApiClient.updateDisplayPreferences('dashboard', result, userId, 'dashboard'); @@ -1289,7 +1289,7 @@ $(document).on('pageshow', "#dashboardPage", DashboardPage.onPageShow).on('pageb var userId = Dashboard.getCurrentUserId(); - apiClient.getDisplayPreferences('dashboard', userId, 'dashboard').done(function (result) { + apiClient.getDisplayPreferences('dashboard', userId, 'dashboard').then(function (result) { if (result.CustomPrefs[welcomeTourKey] == welcomeDismissValue) { $('.welcomeMessage', page).hide(); diff --git a/dashboard-ui/scripts/extensions.js b/dashboard-ui/scripts/extensions.js index d92444d9ed..b38482320d 100644 --- a/dashboard-ui/scripts/extensions.js +++ b/dashboard-ui/scripts/extensions.js @@ -90,87 +90,6 @@ if (!Array.prototype.filter) { }; } -var WebNotifications = { - - show: function (data) { - - if (window.Notification) { - - var level = Notification.permissionLevel ? Notification.permissionLevel() : Notification.permission; - - if (level === "granted") { - var notif = new Notification(data.title, data); - - if (notif.show) { - notif.show(); - } - - if (data.timeout) { - setTimeout(function () { - - if (notif.close) { - notif.close(); - } - else if (notif.cancel) { - notif.cancel(); - } - }, data.timeout); - } - - return notif; - } else if (level === "default") { - Notification.requestPermission(function () { - return WebNotifications.show(data); - }); - } - } - - else if (window.webkitNotifications) { - if (!webkitNotifications.checkPermission()) { - var notif = webkitNotifications.createNotification(data.icon, data.title, data.body); - notif.show(); - - if (data.timeout) { - setTimeout(function () { - - if (notif.close) { - notif.close(); - } - else if (notif.cancel) { - notif.cancel(); - } - }, data.timeout); - } - - return notif; - } else { - webkitNotifications.requestPermission(function () { - return WebNotifications.show(data); - }); - } - } - }, - - requestPermission: function () { - if (window.webkitNotifications) { - if (!webkitNotifications.checkPermission()) { - } else { - webkitNotifications.requestPermission(function () { - }); - } - } - else if (window.Notification) { - - var level = Notification.permissionLevel ? Notification.permissionLevel() : Notification.permission; - - if (level === "default") { - Notification.requestPermission(function () { - }); - } - } - } -}; - /* * Javascript Humane Dates * Copyright (c) 2008 Dean Landolt (deanlandolt.com) @@ -229,30 +148,6 @@ function humane_date(date_str) { return date_str; } -function humane_elapsed(firstDateStr, secondDateStr) { - var dt1 = new Date(firstDateStr); - var dt2 = new Date(secondDateStr); - var seconds = (dt2.getTime() - dt1.getTime()) / 1000; - var numdays = Math.floor((seconds % 31536000) / 86400); - var numhours = Math.floor(((seconds % 31536000) % 86400) / 3600); - var numminutes = Math.floor((((seconds % 31536000) % 86400) % 3600) / 60); - var numseconds = Math.round((((seconds % 31536000) % 86400) % 3600) % 60); - - var elapsedStr = ''; - elapsedStr += numdays == 1 ? numdays + ' day ' : ''; - elapsedStr += numdays > 1 ? numdays + ' days ' : ''; - elapsedStr += numhours == 1 ? numhours + ' hour ' : ''; - elapsedStr += numhours > 1 ? numhours + ' hours ' : ''; - elapsedStr += numminutes == 1 ? numminutes + ' minute ' : ''; - elapsedStr += numminutes > 1 ? numminutes + ' minutes ' : ''; - elapsedStr += elapsedStr.length > 0 ? 'and ' : ''; - elapsedStr += numseconds == 1 ? numseconds + ' second' : ''; - elapsedStr += numseconds == 0 || numseconds > 1 ? numseconds + ' seconds' : ''; - - return elapsedStr; - -} - function getWindowUrl(win) { return (win || window).location.href; } @@ -359,25 +254,6 @@ function parseISO8601Date(s, options) { return new Date(ms); } - -//convert Ticks to human hr:min:sec format -function ticks_to_human(str) { - - var in_seconds = (str / 10000000); - var hours = Math.floor(in_seconds / 3600); - var minutes = Math.floor((in_seconds - (hours * 3600)) / 60); - var seconds = '0' + Math.round(in_seconds - (hours * 3600) - (minutes * 60)); - - var time = ''; - - if (hours > 0) time += hours + ":"; - if (minutes < 10 && hours == 0) time += minutes; - else time += ('0' + minutes).substr(-2); - time += ":" + seconds.substr(-2); - - return time; -}; - // This only exists because the polymer elements get distorted when using regular jquery show/hide $.fn.visible = function (visible) { diff --git a/dashboard-ui/scripts/indexpage.js b/dashboard-ui/scripts/indexpage.js index 05421e0d51..d0c4201182 100644 --- a/dashboard-ui/scripts/indexpage.js +++ b/dashboard-ui/scripts/indexpage.js @@ -133,7 +133,7 @@ function dismissWelcome(page, userId) { - getDisplayPreferences('home', userId).done(function (result) { + getDisplayPreferences('home', userId).then(function (result) { result.CustomPrefs[homePageTourKey] = homePageDismissValue; ApiClient.updateDisplayPreferences('home', result, userId, AppSettings.displayPreferencesKey()); @@ -201,11 +201,11 @@ Dashboard.showLoadingMsg(); - getDisplayPreferences('home', userId).done(function (result) { + getDisplayPreferences('home', userId).then(function (result) { Dashboard.getCurrentUser().then(function (user) { - loadSections(tabContent, user, result).done(function () { + loadSections(tabContent, user, result).then(function () { if (!AppInfo.isNativeApp) { showWelcomeIfNeeded(page, result); @@ -307,9 +307,7 @@ function getDisplayPreferences(key, userId) { - return ApiClient.getDisplayPreferences(key, userId, AppSettings.displayPreferencesKey()).done(function (result) { - - }); + return ApiClient.getDisplayPreferences(key, userId, AppSettings.displayPreferencesKey()); } window.HomePage = { diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index 9c1a34b963..829646cf3d 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -271,7 +271,7 @@ function fadeOutLeft(elem, iterations) { var keyframes = [{ opacity: '1', transform: 'none', offset: 0 }, { opacity: '0', transform: 'translate3d(-100%, 0, 0)', offset: 1 }]; - var timing = { duration: 400, iterations: iterations }; + var timing = { duration: 300, iterations: iterations }; return elem.animate(keyframes, timing); } if (!LibraryBrowser.navigateOnLibraryTabSelect()) { @@ -279,6 +279,7 @@ 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 65ca09e34e..b5e369c879 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -948,37 +948,34 @@ Events.on(apiClient, 'websocketmessage', onWebSocketMessage); } - Dashboard.ready(function () { + if (window.ApiClient) { + initializeApiClient(window.ApiClient); + } - if (window.ApiClient) { - initializeApiClient(window.ApiClient); - } + Events.on(ConnectionManager, 'apiclientcreated', function (e, apiClient) { + initializeApiClient(apiClient); - Events.on(ConnectionManager, 'apiclientcreated', function (e, apiClient) { - initializeApiClient(apiClient); - - }); - - Events.on(ConnectionManager, 'localusersignedin', function () { - requiresLibraryMenuRefresh = true; - requiresViewMenuRefresh = true; - requiresDrawerRefresh = true; - }); - - Events.on(ConnectionManager, 'localusersignedout', function () { - requiresLibraryMenuRefresh = true; - requiresViewMenuRefresh = true; - requiresDrawerRefresh = true; - }); - - Events.on(MediaController, 'playerchange', function () { - updateCastIcon(); - }); - - var mainDrawerPanel = document.querySelector('.mainDrawerPanel'); - mainDrawerPanel.addEventListener('iron-select', onMainDrawerSelect); }); + Events.on(ConnectionManager, 'localusersignedin', function () { + requiresLibraryMenuRefresh = true; + requiresViewMenuRefresh = true; + requiresDrawerRefresh = true; + }); + + Events.on(ConnectionManager, 'localusersignedout', function () { + requiresLibraryMenuRefresh = true; + requiresViewMenuRefresh = true; + requiresDrawerRefresh = true; + }); + + Events.on(MediaController, 'playerchange', function () { + updateCastIcon(); + }); + + var mainDrawerPanel = document.querySelector('.mainDrawerPanel'); + mainDrawerPanel.addEventListener('iron-select', onMainDrawerSelect); + })(window, document, jQuery, window.devicePixelRatio); (function () { diff --git a/dashboard-ui/scripts/loginpage.js b/dashboard-ui/scripts/loginpage.js index a980b701f1..4c738c7f93 100644 --- a/dashboard-ui/scripts/loginpage.js +++ b/dashboard-ui/scripts/loginpage.js @@ -121,7 +121,7 @@ Dashboard.hideLoadingMsg(); setTimeout(function () { - Dashboard.showError(Globalize.translate('MessageInvalidUser')); + Dashboard.alert(Globalize.translate('MessageInvalidUser')); }, 300); }); diff --git a/dashboard-ui/scripts/mypreferenceshome.js b/dashboard-ui/scripts/mypreferenceshome.js index 0570de1548..9473652c2d 100644 --- a/dashboard-ui/scripts/mypreferenceshome.js +++ b/dashboard-ui/scripts/mypreferenceshome.js @@ -220,7 +220,7 @@ ApiClient.getUser(userId).done(function (user) { - ApiClient.getDisplayPreferences('home', user.Id, AppSettings.displayPreferencesKey()).done(function (displayPreferences) { + ApiClient.getDisplayPreferences('home', user.Id, AppSettings.displayPreferencesKey()).then(function (displayPreferences) { saveUser(page, user, displayPreferences); @@ -285,7 +285,7 @@ ApiClient.getUser(userId).done(function (user) { - ApiClient.getDisplayPreferences('home', user.Id, AppSettings.displayPreferencesKey()).done(function (result) { + ApiClient.getDisplayPreferences('home', user.Id, AppSettings.displayPreferencesKey()).then(function (result) { loadForm(page, user, result); diff --git a/dashboard-ui/scripts/myprofile.js b/dashboard-ui/scripts/myprofile.js index 4b32d0fd73..8fdd814fa8 100644 --- a/dashboard-ui/scripts/myprofile.js +++ b/dashboard-ui/scripts/myprofile.js @@ -72,15 +72,15 @@ switch (evt.target.error.code) { case evt.target.error.NOT_FOUND_ERR: - Dashboard.showError(Globalize.translate('FileNotFound')); + Dashboard.alert(Globalize.translate('FileNotFound')); break; case evt.target.error.NOT_READABLE_ERR: - Dashboard.showError(Globalize.translate('FileReadError')); + Dashboard.alert(Globalize.translate('FileReadError')); break; case evt.target.error.ABORT_ERR: break; // noop default: - Dashboard.showError(Globalize.translate('FileReadError')); + Dashboard.alert(Globalize.translate('FileReadError')); }; } @@ -92,7 +92,7 @@ function onFileReaderAbort(evt) { Dashboard.hideLoadingMsg(); - Dashboard.showError(Globalize.translate('FileReadCancelled')); + Dashboard.alert(Globalize.translate('FileReadCancelled')); } function setFiles(page, files) { @@ -317,7 +317,7 @@ if ($('#txtNewPassword', page).val() != $('#txtNewPasswordConfirm', page).val()) { - Dashboard.showError(Globalize.translate('PasswordMatchError')); + Dashboard.alert(Globalize.translate('PasswordMatchError')); } else { Dashboard.showLoadingMsg(); diff --git a/dashboard-ui/scripts/scheduledtaskspage.js b/dashboard-ui/scripts/scheduledtaskspage.js index e32433af5f..a12a17ff96 100644 --- a/dashboard-ui/scripts/scheduledtaskspage.js +++ b/dashboard-ui/scripts/scheduledtaskspage.js @@ -92,6 +92,30 @@ divScheduledTasks.innerHTML = html; } + function humane_elapsed(firstDateStr, secondDateStr) { + var dt1 = new Date(firstDateStr); + var dt2 = new Date(secondDateStr); + var seconds = (dt2.getTime() - dt1.getTime()) / 1000; + var numdays = Math.floor((seconds % 31536000) / 86400); + var numhours = Math.floor(((seconds % 31536000) % 86400) / 3600); + var numminutes = Math.floor((((seconds % 31536000) % 86400) % 3600) / 60); + var numseconds = Math.round((((seconds % 31536000) % 86400) % 3600) % 60); + + var elapsedStr = ''; + elapsedStr += numdays == 1 ? numdays + ' day ' : ''; + elapsedStr += numdays > 1 ? numdays + ' days ' : ''; + elapsedStr += numhours == 1 ? numhours + ' hour ' : ''; + elapsedStr += numhours > 1 ? numhours + ' hours ' : ''; + elapsedStr += numminutes == 1 ? numminutes + ' minute ' : ''; + elapsedStr += numminutes > 1 ? numminutes + ' minutes ' : ''; + elapsedStr += elapsedStr.length > 0 ? 'and ' : ''; + elapsedStr += numseconds == 1 ? numseconds + ' second' : ''; + elapsedStr += numseconds == 0 || numseconds > 1 ? numseconds + ' seconds' : ''; + + return elapsedStr; + + } + function getTaskProgressHtml(task) { var html = ''; diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 077b26b08d..171b64afda 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -16,50 +16,18 @@ $.support.cors = true; function onOneDocumentClick() { + document.removeEventListener('click', onOneDocumentClick); - WebNotifications.requestPermission(); + + if (window.Notification) { + Notification.requestPermission(); + } } document.addEventListener('click', onOneDocumentClick); })(); var Dashboard = { - jQueryMobileInit: function () { - - // Page - //$.mobile.page.prototype.options.theme = "a"; - //$.mobile.page.prototype.options.headerTheme = "a"; - //$.mobile.page.prototype.options.contentTheme = "a"; - //$.mobile.page.prototype.options.footerTheme = "a"; - - //$.mobile.button.prototype.options.theme = "c"; - //$.mobile.listview.prototype.options.dividerTheme = "b"; - - //$.mobile.popup.prototype.options.theme = "c"; - //$.mobile.popup.prototype.options.transition = "none"; - - if ($.browser.mobile) { - $.mobile.defaultPageTransition = "none"; - } else { - $.mobile.defaultPageTransition = "none"; - } - //$.mobile.collapsible.prototype.options.contentTheme = "a"; - - // Make panels a little larger than the defaults - - //$.event.special.swipe.verticalDistanceThreshold = 40; - //$.mobile.page.prototype.options.domCache = true; - - $.mobile.hideUrlBar = false; - $.mobile.autoInitializePage = false; - $.mobile.changePage.defaults.showLoadMsg = false; - - // These are not needed. Nulling them out can help reduce dom querying when pages are loaded - $.mobile.nojs = null; - $.mobile.degradeInputsWithin = null; - - $.mobile.filterHtml = Dashboard.filterHtml; - }, filterHtml: function (html) { @@ -282,11 +250,6 @@ var Dashboard = { } }, - showError: function (message) { - - Dashboard.alert(message); - }, - updateSystemInfo: function (info) { Dashboard.lastSystemInfo = info; @@ -578,11 +541,9 @@ var Dashboard = { Dashboard.hideLoadingMsg(); - Dashboard.alert("Settings saved."); + Dashboard.alert(Globalize.translate('MessageSettingsSaved')); }, - defaultErrorMessage: Globalize.translate('DefaultErrorMessage'), - processServerConfigurationUpdateResult: function (result) { Dashboard.hideLoadingMsg(); @@ -1364,7 +1325,7 @@ var Dashboard = { var newItems = data.ItemsAdded; - if (!newItems.length || AppInfo.isNativeApp) { + if (!newItems.length || AppInfo.isNativeApp || !window.Notification) { return; } @@ -1389,7 +1350,8 @@ var Dashboard = { var notification = { title: "New " + item.Type, body: item.Name, - timeout: 5000 + timeout: 5000, + vibrate: true }; var imageTags = item.ImageTags || {}; @@ -1403,6 +1365,26 @@ var Dashboard = { }); } + if (Notification.permission === "granted") { + + var notif = new Notification(notification.title, notification); + + if (notif.show) { + notif.show(); + } + + if (notification.timeout) { + setTimeout(function () { + + if (notif.close) { + notif.close(); + } + else if (notif.cancel) { + notif.cancel(); + } + }, notification.timeout); + } + } WebNotifications.show(notification); } }); @@ -1727,17 +1709,6 @@ var Dashboard = { exit: function () { Dashboard.logout(); - }, - - loadDragula: function (callback) { - - require(['dragula'], function (dragula) { - - Dashboard.importCss('bower_components/dragula.js/dist/dragula.min.css'); - - callback(dragula); - }); - } }; @@ -2215,6 +2186,8 @@ var AppInfo = {}; deps.push('bower_components/fetch/fetch'); } + deps.push('scripts/mediacontroller'); + require(deps, function () { loadImageCache(); @@ -2247,8 +2220,12 @@ var AppInfo = {}; require(['cordova/android/logging']); } + deps.push('scripts/librarybrowser'); + deps.push('scripts/globalize'); deps.push('appstorage'); deps.push('scripts/mediaplayer'); + deps.push('scripts/appsettings'); + deps.push('apiclient/connectionmanager'); require(deps, function () { @@ -2382,6 +2359,11 @@ var AppInfo = {}; deps.push('scripts/librarylist'); deps.push('scripts/notifications'); deps.push('scripts/alphapicker'); + deps.push('thirdparty/jquery.unveil-custom.js'); + deps.push('scripts/playlistmanager'); + deps.push('scripts/sync'); + deps.push('scripts/backdrops'); + deps.push('scripts/librarymenu'); require(deps, function () { @@ -2605,4 +2587,4 @@ window.addEventListener("beforeunload", function () { } }); -Dashboard.jQueryMobileInit(); \ No newline at end of file +$.mobile.filterHtml = Dashboard.filterHtml; \ No newline at end of file diff --git a/dashboard-ui/scripts/supporterkeypage.js b/dashboard-ui/scripts/supporterkeypage.js index b9609ea7b8..271e5740ed 100644 --- a/dashboard-ui/scripts/supporterkeypage.js +++ b/dashboard-ui/scripts/supporterkeypage.js @@ -85,7 +85,7 @@ if (result.Success) { Dashboard.alert(Globalize.translate('MessageKeysLinked')); } else { - Dashboard.showError(result.ErrorMessage); + Dashboard.alert(result.ErrorMessage); } Logger.log(result); @@ -109,7 +109,7 @@ if (result.Success) { Dashboard.alert(Globalize.translate('MessageKeyEmailedTo').replace("{0}", email)); } else { - Dashboard.showError(result.ErrorMessage); + Dashboard.alert(result.ErrorMessage); } Logger.log(result); diff --git a/dashboard-ui/scripts/usernew.js b/dashboard-ui/scripts/usernew.js index 8e91a28f54..91a745db13 100644 --- a/dashboard-ui/scripts/usernew.js +++ b/dashboard-ui/scripts/usernew.js @@ -109,7 +109,7 @@ }).fail(function() { - Dashboard.showError(Globalize.translate('DefaultErrorMessage')); + Dashboard.alert(Globalize.translate('DefaultErrorMessage')); Dashboard.hideLoadingMsg(); }); }