diff --git a/awx/ui/static/js/app.js b/awx/ui/static/js/app.js index 0a4206d2c1..ed0a3b7ab8 100644 --- a/awx/ui/static/js/app.js +++ b/awx/ui/static/js/app.js @@ -35,6 +35,9 @@ import dashboardGraphs from 'tower/directives/_dashboard-graphs'; import routeExtensions from 'tower/shared/route-extensions/main'; +// modules +import browserData from 'tower/browser-data/main'; + import {JobDetailController} from 'tower/controllers/JobDetail'; import {JobStdoutController} from 'tower/controllers/JobStdout'; import {JobTemplatesList, JobTemplatesAdd, JobTemplatesEdit} from 'tower/controllers/JobTemplates'; @@ -74,6 +77,7 @@ var tower = angular.module('Tower', [ dataServices.name, dashboardGraphs.name, routeExtensions.name, + browserData.name, 'AuthService', 'Utilities', 'LicenseHelper', @@ -878,27 +882,6 @@ var tower = angular.module('Tower', [ var e, html, sock; - function detectBrowser() { - var ua = window.navigator.userAgent, - browser; - if (ua.search("MSIE") >= 0) { - browser = "MSIE"; - } - else if (navigator.userAgent.search("Chrome") >= 0 && navigator.userAgent.search("OPR") < 0) { - browser = "CHROME"; - } - else if (navigator.userAgent.search("Firefox") >= 0) { - browser = "FF"; - } - else if (navigator.userAgent.search("Safari") >= 0 && navigator.userAgent.search("Chrome") < 0 && navigator.userAgent.search("OPR") < 0) { - browser = "SAFARI"; - } - else if (navigator.userAgent.search("OPR") >= 0) { - browser = "OPERA"; - } - return browser; - } - function activateTab() { // Make the correct tab active var base = $location.path().replace(/^\//, '').split('/')[0]; @@ -941,8 +924,6 @@ var tower = angular.module('Tower', [ $rootScope.crumbCache = []; $rootScope.sessionTimer = Timer.init(); - $rootScope.browser = detectBrowser(); - if ($rootScope.removeOpenSocket) { $rootScope.removeOpenSocket(); } diff --git a/awx/ui/static/js/browser-data/browser-data.factory.js b/awx/ui/static/js/browser-data/browser-data.factory.js new file mode 100644 index 0000000000..30d75a6b76 --- /dev/null +++ b/awx/ui/static/js/browser-data/browser-data.factory.js @@ -0,0 +1,29 @@ +export default ['$window', function($window) { + var ua = $window.navigator.userAgent, + browserName; + + var browser = + { userAgent: ua, + platform: $window.navigator.platform, + name: "Unknown Browser" + }; + + if (ua.search("MSIE") >= 0) { + browserName = "Internet Explorer"; + } + else if (navigator.userAgent.search("Chrome") >= 0 && navigator.userAgent.search("OPR") < 0) { + browserName = "Chrome"; + } + else if (navigator.userAgent.search("Firefox") >= 0) { + browserName = "Firefox"; + } + else if (navigator.userAgent.search("Safari") >= 0 && navigator.userAgent.search("Chrome") < 0 && navigator.userAgent.search("OPR") < 0) { + browserName = "Safari"; + } + else if (navigator.userAgent.search("OPR") >= 0) { + browserName = "Opera"; + } + + browser.name = browserName; + return browser; +}]; diff --git a/awx/ui/static/js/browser-data/main.js b/awx/ui/static/js/browser-data/main.js new file mode 100644 index 0000000000..3576e0f4ef --- /dev/null +++ b/awx/ui/static/js/browser-data/main.js @@ -0,0 +1,7 @@ +import getBrowserData from './browser-data.factory'; +import ngApp from './ng-app.directive'; + +export default + angular.module('browserData', []) + .directive('ngApp', ngApp) + .factory('browserData', getBrowserData); diff --git a/awx/ui/static/js/browser-data/ng-app.directive.js b/awx/ui/static/js/browser-data/ng-app.directive.js new file mode 100644 index 0000000000..3d9f517f51 --- /dev/null +++ b/awx/ui/static/js/browser-data/ng-app.directive.js @@ -0,0 +1,11 @@ +/* jshint unused: vars */ + +export default ['browserData', function(browserData) { + return { + link: function(scope, element, attrs) { + element + .attr('data-browser', browserData.userAgent) + .attr('data-platform', browserData.platform); + } + }; +}]; diff --git a/awx/ui/static/js/helpers/SocketHelper.js b/awx/ui/static/js/helpers/SocketHelper.js index ec57a29b31..2c1ba6a50b 100644 --- a/awx/ui/static/js/helpers/SocketHelper.js +++ b/awx/ui/static/js/helpers/SocketHelper.js @@ -15,30 +15,21 @@ export default angular.module('SocketHelper', ['Utilities', 'FFSocketHelpDefinition', 'SafariSocketHelpDefinition' , 'ChromeSocketHelpDefinition']) - .factory('ShowSocketHelp', ['$location', '$rootScope', 'FFSocketHelp', 'SafariSocketHelp', 'ChromeSocketHelp', 'HelpDialog', - function($location, $rootScope, FFSocketHelp, SafariSocketHelp, ChromeSocketHelp, HelpDialog) { + .factory('ShowSocketHelp', ['$location', '$rootScope', 'FFSocketHelp', 'SafariSocketHelp', 'ChromeSocketHelp', 'HelpDialog', 'browserData', + function($location, $rootScope, FFSocketHelp, SafariSocketHelp, ChromeSocketHelp, HelpDialog, browserData) { return function() { var scope = $rootScope.$new(); scope.socketPort = $AnsibleConfig.websocket_port; scope.socketURL = 'https://' + $location.host() + ':' + scope.socketPort + '/'; - if ($rootScope.browser === "FF") { - scope.browserName = "Firefox"; + scope.browserName = browserData.name; + + if (browserData.name === 'Firefox') { HelpDialog({ defn: FFSocketHelp, scope: scope }); } - else if ($rootScope.browser === "SAFARI") { - scope.browserName = "Safari"; + else if (browserData.name === 'Safari') { HelpDialog({ defn: SafariSocketHelp, scope: scope }); } else { - if ($rootScope.browser === "MSIE") { - scope.browserName = "Internet Explorer"; - } - else if ($rootScope.browser === "CHROME") { - scope.browserName = "Chrome"; - } - else if ($rootScope.browser === "OPERA") { - scope.browserName = "Opera"; - } HelpDialog({ defn: ChromeSocketHelp, scope: scope }); } };