diff --git a/app/templates/bower.json b/app/templates/bower.json
index 4b604d2c..00b4456d 100644
--- a/app/templates/bower.json
+++ b/app/templates/bower.json
@@ -3,19 +3,19 @@
"version": "0.0.0",
"dependencies": {
"jquery": "~2.1.4",
- "angular": "~1.4.4",
+ "angular": "~1.5.x",
"angular-bootstrap": "^1.1",
- "angular-cookies": "~1.4.4",
- "angular-highlightjs": "~0.4.3",
- "angular-mocks": "~1.4.4",
- "angular-ui-router": "~0.2.15",
+ "angular-cookies": "~1.5.x",
+ "angular-highlightjs": "^0.6.1",
+ "angular-mocks": "~1.5.x",
+ "angular-ui-router": "^1.0.0",
"angular-ui-tinymce": "~0.0.9",
- "angular-animate": "~1.4.4",
+ "angular-animate": "~1.5.x",
"ngtoast": "^2.0.0",
"angular-x2js": "https://github.com/janmichaelyu/angular-x2js.git",
"bootstrap": "~3.3.5",
"font-awesome": "~4.6.0",
- "highlightjs":"~8.7.0",
+ "highlightjs": "~8.7.0",
"lodash": "~3.10.1",
"ml-search-ng": "~0.2.0",
"ml-utils": "withjam/ml-utils",
@@ -27,16 +27,19 @@
},
"overrides": {
"angular-highlightjs": {
- "dependencies": {"angular" : ">1.0.8", "highlightjs":"~8.7.0"}
+ "dependencies": {
+ "angular": ">1.0.8",
+ "highlightjs": "~8.7.0"
+ }
}
},
"devDependencies": {
- "angular-mocks": "~1.4.4",
+ "angular-mocks": "~1.5.x",
"sinon": "http://sinonjs.org/releases/sinon-1.16.1.js",
"bardjs": "~0.1.8"
},
"private": true,
"resolutions": {
- "angular": "~1.4.4"
+ "angular": "~1.5.x"
}
}
diff --git a/app/templates/ui/app/create/create.component.js b/app/templates/ui/app/create/create.component.js
new file mode 100644
index 00000000..e0722f6b
--- /dev/null
+++ b/app/templates/ui/app/create/create.component.js
@@ -0,0 +1,11 @@
+(function() {
+ 'use strict';
+
+ angular.module('app.create')
+ .component('create', {
+ bindings: {},
+ controller: 'CreateCtrl',
+ templateUrl: 'app/create/create.html'
+ });
+
+}());
diff --git a/app/templates/ui/app/create/create.html b/app/templates/ui/app/create/create.html
index e2f6fdf6..fb76e3cc 100644
--- a/app/templates/ui/app/create/create.html
+++ b/app/templates/ui/app/create/create.html
@@ -1,4 +1,4 @@
-
+
Create a Document
@@ -7,97 +7,97 @@
Create a Document
diff --git a/app/templates/ui/app/detail/detail.component.js b/app/templates/ui/app/detail/detail.component.js
new file mode 100644
index 00000000..c83cc426
--- /dev/null
+++ b/app/templates/ui/app/detail/detail.component.js
@@ -0,0 +1,13 @@
+(function() {
+ 'use strict';
+
+ angular.module('app.detail')
+ .component('detail', {
+ bindings: {
+ doc: '<'
+ },
+ controller: 'DetailCtrl',
+ templateUrl: 'app/detail/detail.html'
+ });
+
+}());
diff --git a/app/templates/ui/app/detail/detail.controller.js b/app/templates/ui/app/detail/detail.controller.js
index 0be9d3bd..733438ee 100644
--- a/app/templates/ui/app/detail/detail.controller.js
+++ b/app/templates/ui/app/detail/detail.controller.js
@@ -1,14 +1,16 @@
/* global X2JS,vkbeautify */
-(function () {
+(function() {
'use strict';
angular.module('app.detail')
- .controller('DetailCtrl', DetailCtrl);
+ .controller('DetailCtrl', DetailCtrl);
- DetailCtrl.$inject = ['doc', '$stateParams'];
- function DetailCtrl(doc, $stateParams) {
+ DetailCtrl.$inject = ['$stateParams'];
+
+ function DetailCtrl($stateParams) {
var ctrl = this;
var uri = $stateParams.uri;
+ var doc = this.doc;
var contentType = doc.headers('content-type');
@@ -27,20 +29,26 @@
/* jscs: enable */
} else if (contentType.lastIndexOf('text/plain', 0) === 0) {
ctrl.xml = doc.data;
- ctrl.json = {'Document' : doc.data};
+ ctrl.json = {
+ 'Document': doc.data
+ };
ctrl.type = 'text';
- } else if (contentType.lastIndexOf('application', 0) === 0 ) {
+ } else if (contentType.lastIndexOf('application', 0) === 0) {
ctrl.xml = 'Binary object';
- ctrl.json = {'Document type' : 'Binary object'};
+ ctrl.json = {
+ 'Document type': 'Binary object'
+ };
ctrl.type = 'binary';
} else {
ctrl.xml = 'Error occured determining document type.';
- ctrl.json = {'Error' : 'Error occured determining document type.'};
+ ctrl.json = {
+ 'Error': 'Error occured determining document type.'
+ };
}
angular.extend(ctrl, {
- doc : doc.data,
- uri : uri
+ doc: doc.data,
+ uri: uri
});
}
}());
diff --git a/app/templates/ui/app/detail/detail.controller.spec.js b/app/templates/ui/app/detail/detail.controller.spec.js
index e2997317..7d30b6cf 100644
--- a/app/templates/ui/app/detail/detail.controller.spec.js
+++ b/app/templates/ui/app/detail/detail.controller.spec.js
@@ -1,8 +1,8 @@
/* jshint -W117, -W030 */
-(function () {
+(function() {
'use strict';
- describe('Controller: DetailCtrl', function () {
+ describe('Controller: DetailCtrl', function() {
var controller;
var doc;
@@ -12,20 +12,24 @@
bard.inject('$controller', '$rootScope');
});
- beforeEach(function () {
+ beforeEach(function() {
// stub the document
- var headers = function() { return 'application/json'; };
+ var headers = function() {
+ return 'application/json';
+ };
doc = {
headers: headers,
data: {
name: 'hi'
}
};
- controller = $controller('DetailCtrl', { doc: doc });
+ controller = $controller('DetailCtrl', {}, {
+ doc: doc
+ });
$rootScope.$apply();
});
- it('should be created successfully', function () {
+ it('should be created successfully', function() {
expect(controller).to.be.defined;
});
diff --git a/app/templates/ui/app/detail/detail.html b/app/templates/ui/app/detail/detail.html
index b5de742e..ea4766d7 100644
--- a/app/templates/ui/app/detail/detail.html
+++ b/app/templates/ui/app/detail/detail.html
@@ -2,24 +2,24 @@
- {{ctrl.type | uppercase}}
+ {{$ctrl.type | uppercase}}
-
+
JSON
-
+
-
+
XML
-
{{ctrl.xml}}
+
{{$ctrl.xml}}
@@ -29,7 +29,7 @@
diff --git a/app/templates/ui/app/detail/similar-directive.html b/app/templates/ui/app/detail/similar-component.html
similarity index 74%
rename from app/templates/ui/app/detail/similar-directive.html
rename to app/templates/ui/app/detail/similar-component.html
index 901f0846..2f70fdbd 100644
--- a/app/templates/ui/app/detail/similar-directive.html
+++ b/app/templates/ui/app/detail/similar-component.html
@@ -1,8 +1,8 @@
\ No newline at end of file
+
diff --git a/app/templates/ui/app/detail/similar-component.js b/app/templates/ui/app/detail/similar-component.js
new file mode 100644
index 00000000..9c099a60
--- /dev/null
+++ b/app/templates/ui/app/detail/similar-component.js
@@ -0,0 +1,31 @@
+(function() {
+
+ 'use strict';
+
+ angular.module('app.similar')
+ .component('mlSimilar', {
+ bindings: {
+ uri: '@',
+ limit: '@'
+ },
+ controller: MlSimilar,
+ templateUrl: 'app/detail/similar-component.html'
+ });
+
+ MlSimilar.$inject = ['MLRest'];
+
+ function MlSimilar(mlRest) {
+ var ctrl = this;
+
+ mlRest.extension('extsimilar', {
+ method: 'GET',
+ params: {
+ 'rs:uri': ctrl.uri,
+ 'rs:limit': ctrl.limit ? ctrl.limit : 10
+ }
+ }).then(function(response) {
+ ctrl.similar = response.data.similar;
+ });
+ }
+
+}());
diff --git a/app/templates/ui/app/detail/similar-directive.js b/app/templates/ui/app/detail/similar-directive.js
deleted file mode 100644
index 53a956ea..00000000
--- a/app/templates/ui/app/detail/similar-directive.js
+++ /dev/null
@@ -1,32 +0,0 @@
-(function () {
-
- 'use strict';
-
- angular.module('app.similar')
- .directive('mlSimilar', mlSimilar);
-
- mlSimilar.$inject = ['MLRest'];
-
- function mlSimilar(mlRest) {
- return {
- restrict: 'E',
- templateUrl: 'app/detail/similar-directive.html',
- scope: { uri: '@', limit: '@' },
- link: function(scope, iElement, iAttrs, ctrl) {
- mlRest.extension('extsimilar',
- {
- method: 'GET',
- params:
- {
- 'rs:uri': scope.uri,
- 'rs:limit': scope.limit ? scope.limit : 10
- }
- })
- .then(function(response) {
- scope.similar = response.data.similar;
- });
- }
- };
- }
-
-}());
diff --git a/app/templates/ui/app/login/login-dir.html b/app/templates/ui/app/login/login-component.html
similarity index 60%
rename from app/templates/ui/app/login/login-dir.html
rename to app/templates/ui/app/login/login-component.html
index ba640235..a491de73 100644
--- a/app/templates/ui/app/login/login-dir.html
+++ b/app/templates/ui/app/login/login-component.html
@@ -1,13 +1,13 @@
diff --git a/app/templates/ui/app/login/login-full.component.js b/app/templates/ui/app/login/login-full.component.js
new file mode 100644
index 00000000..235da5ad
--- /dev/null
+++ b/app/templates/ui/app/login/login-full.component.js
@@ -0,0 +1,11 @@
+(function() {
+ 'use strict';
+
+ angular.module('app.login')
+ .component('loginFull', {
+ bindings: {},
+ controller: 'LoginFullCtrl',
+ templateUrl: 'app/login/login-full.html'
+ });
+
+}());
diff --git a/app/templates/ui/app/login/login-full.html b/app/templates/ui/app/login/login-full.html
index f7301298..38265c9e 100644
--- a/app/templates/ui/app/login/login-full.html
+++ b/app/templates/ui/app/login/login-full.html
@@ -1,7 +1,7 @@
diff --git a/app/templates/ui/app/login/login.component.js b/app/templates/ui/app/login/login.component.js
new file mode 100644
index 00000000..c882c2d6
--- /dev/null
+++ b/app/templates/ui/app/login/login.component.js
@@ -0,0 +1,16 @@
+(function() {
+
+ 'use strict';
+
+ angular.module('app.login')
+ .component('login', {
+ bindings: {
+ showCancel: '=',
+ mode: '@',
+ callback: '&'
+ },
+ controller: 'LoginCtrl',
+ templateUrl: 'app/login/login-component.html',
+ });
+
+}());
diff --git a/app/templates/ui/app/login/login.controller.js b/app/templates/ui/app/login/login.controller.js
index b96c33ed..858d8e7f 100644
--- a/app/templates/ui/app/login/login.controller.js
+++ b/app/templates/ui/app/login/login.controller.js
@@ -1,4 +1,4 @@
-(function () {
+(function() {
'use strict';
angular.module('app.login')
@@ -6,6 +6,7 @@
.controller('LoginFullCtrl', LoginFullCtrl);
LoginCtrl.$inject = ['$scope', 'loginService'];
+
function LoginCtrl($scope, loginService) {
var ctrl = this;
angular.extend(ctrl, {
@@ -34,13 +35,16 @@
}
function callback(user) {
- if ($scope.callback && !loginService.loginError()) {
- $scope.callback({user: user});
+ if (ctrl.callback && !loginService.loginError()) {
+ ctrl.callback({
+ user: user
+ });
}
}
}
LoginFullCtrl.$inject = ['$state', '$stateParams'];
+
function LoginFullCtrl($state, $stateParams) {
var ctrl = this;
angular.extend(ctrl, {
diff --git a/app/templates/ui/app/login/login.directive.js b/app/templates/ui/app/login/login.directive.js
deleted file mode 100644
index 7087b564..00000000
--- a/app/templates/ui/app/login/login.directive.js
+++ /dev/null
@@ -1,23 +0,0 @@
-(function () {
-
- 'use strict';
-
- angular.module('app.login')
- .directive('login', LoginDirective);
-
- function LoginDirective() {
- return {
- restrict: 'EA',
- controller: 'LoginCtrl',
- controllerAs: 'ctrl',
- replace: true,
- scope: {
- showCancel: '=',
- mode: '@',
- callback: '&'
- },
- templateUrl: 'app/login/login-dir.html'
- };
- }
-
-}());
diff --git a/app/templates/ui/app/login/login.module.js b/app/templates/ui/app/login/login.module.js
index cba9264f..6a7e97b9 100644
--- a/app/templates/ui/app/login/login.module.js
+++ b/app/templates/ui/app/login/login.module.js
@@ -1,4 +1,6 @@
-(function () {
+(function() {
'use strict';
- angular.module('app.login', ['app.messageBoard', 'ml.common', 'ui.bootstrap', 'ui.router']);
+ angular.module('app.login', ['app.messageBoard', 'ml.common', 'ui.bootstrap',
+ 'ui.router', 'app.user'
+ ]);
}());
diff --git a/app/templates/ui/app/login/login.service.js b/app/templates/ui/app/login/login.service.js
index ad932cdb..a2ae4299 100644
--- a/app/templates/ui/app/login/login.service.js
+++ b/app/templates/ui/app/login/login.service.js
@@ -1,13 +1,15 @@
-(function () {
+(function() {
'use strict';
angular.module('app.login')
.factory('loginService', LoginService);
LoginService.$inject = ['$http', '$uibModal', '$q', '$rootScope', '$state',
- '$stateParams', 'messageBoardService'];
+ '$stateParams', 'messageBoardService', '$transitions', 'userService'
+ ];
+
function LoginService($http, $uibModal, $q, $rootScope, $state,
- $stateParams, messageBoardService) {
+ $stateParams, messageBoardService, $transitions, userService) {
var service = {};
var _loginMode = 'full'; // 'modal', 'top-right', or 'full'
@@ -17,7 +19,6 @@
var _isAuthenticated;
var _userPrefix = '';
var _protectedRoutes = [];
- var deregisterLoginSuccess;
function loginMode(mode) {
if (mode === undefined) {
@@ -47,9 +48,7 @@
}
if (response.data.authenticated === false) {
_isAuthenticated = false;
- }
- else
- {
+ } else {
loginSuccess(response);
}
return service.isAuthenticated();
@@ -59,7 +58,7 @@
function loginSuccess(response) {
_loginError = null;
_isAuthenticated = true;
- $rootScope.$broadcast('loginService:login-success', response.data);
+ userService.updateUser(response);
}
function login(username, password) {
@@ -72,6 +71,7 @@
}, failLogin);
}
+ //loginPrompt not used for transition events atm due to weird state.go behaviour
function loginPrompt() {
var d = $q.defer();
if (_loginMode === 'modal') {
@@ -95,27 +95,28 @@
keyboard: false
});
} else if (_loginMode === 'top-right') {
- messageBoardService.message({title: 'Please sign-in to see content.'});
+ messageBoardService.message({
+ title: 'Please sign-in to see content.'
+ });
var deregisterMsgBoard = $rootScope.$on('loginService:login-success', function(e, user) {
messageBoardService.message(null);
d.resolve(user);
deregisterMsgBoard();
});
} else {
- $state.go('root.login',
- {
- 'state': _toStateName || $state.current.name,
- 'params': JSON.stringify((_toStateParams || $stateParams))
- }).then(function() {
- d.reject();
- });
+ $state.go('root.login', {
+ 'state': _toStateName || $state.current.name,
+ 'params': JSON.stringify((_toStateParams || $stateParams))
+ }).then(function() {
+ d.reject();
+ });
}
return d.promise;
}
function logout() {
return $http.get('/api/user/logout').then(function(response) {
- $rootScope.$broadcast('loginService:logout-success', response);
+ userService.logOut();
_loginError = null;
_isAuthenticated = false;
$state.reload();
@@ -138,45 +139,34 @@
return _protectedRoutes.indexOf(route) > -1;
}
- function blockRoute(event, next, nextParams) {
- event.preventDefault();
- service.loginPrompt();
- if (_loginMode !== 'full') {
- if (deregisterLoginSuccess) {
- deregisterLoginSuccess();
- deregisterLoginSuccess = null;
- }
- deregisterLoginSuccess = $rootScope.$on('loginService:login-success', function() {
- deregisterLoginSuccess();
- deregisterLoginSuccess = null;
- $state.go(next.name, nextParams);
- });
- }
- }
+ $transitions.onStart({
+ to: '*.*'
+ }, function($transition$) {
- $rootScope.$on('$stateChangeStart', function(event, next, nextParams) {
- if (next.name !== 'root.login') {
- _toStateName = next.name;
- _toStateParams = nextParams;
+ if ($transition$.$to().name !== 'root.login') {
+ _toStateName = $transition$.$to().name;
+ _toStateParams = $transition$.$to().params;
}
- if (routeIsProtected(next.name)) {
+ if (routeIsProtected($transition$.$to().name)) {
var auth = service.getAuthenticatedStatus();
-
if (angular.isFunction(auth.then)) {
- auth.then(function() {
+ return auth.then(function() {
if (!service.isAuthenticated()) {
- //this does NOT block requests in a timely fashion...
- blockRoute(event, next, nextParams);
+ return $state.target('root.login', {
+ 'state': _toStateName || $state.current.name,
+ 'params': JSON.stringify((_toStateParams || $stateParams))
+ });
}
});
- }
- else {
+ } else {
if (!auth) {
- blockRoute(event, next, nextParams);
+ return $state.target('root.login', {
+ 'state': _toStateName || $state.current.name,
+ 'params': JSON.stringify((_toStateParams || $stateParams))
+ });
}
}
-
}
});
@@ -189,6 +179,7 @@
login: login,
logout: logout,
loginPrompt: loginPrompt,
+ loginSuccess: loginSuccess,
loginError: loginError,
loginMode: loginMode,
isAuthenticated: isAuthenticated,
diff --git a/app/templates/ui/app/login/login.service.spec.js b/app/templates/ui/app/login/login.service.spec.js
index a6e7c547..0aa76ad5 100644
--- a/app/templates/ui/app/login/login.service.spec.js
+++ b/app/templates/ui/app/login/login.service.spec.js
@@ -1,8 +1,8 @@
/* jshint -W117, -W030 */
-(function () {
+(function() {
'use strict';
- describe('Service: loginService', function () {
+ describe('Service: loginService', function() {
var service;
var modalOpened = false;
@@ -23,9 +23,15 @@
});
bard.mockService($state, {
- current: { name: 'root.search', params: {} },
+ current: {
+ name: 'root.search',
+ params: {}
+ },
go: function(stateName, stateParams) {
- this.current = { name: stateName, params: stateParams };
+ this.current = {
+ name: stateName,
+ params: stateParams
+ };
return $q.when();
}
});
@@ -33,19 +39,21 @@
bard.mockService($uibModal, {
open: function() {
modalOpened = true;
- return { result: angular.noop };
+ return {
+ result: angular.noop
+ };
}
});
});
- beforeEach(inject(function (_loginService_) {
+ beforeEach(inject(function(_loginService_) {
service = _loginService_;
modalOpened = false;
}));
- it('should be defined', function () {
+ it('should be defined', function() {
expect(service).to.be.defined;
});
@@ -68,7 +76,7 @@
});
});
- describe('Service: loginService - should be authenticated if logged in already', function () {
+ describe('Service: loginService - should be authenticated if logged in already', function() {
var service;
var modalOpened = false;
@@ -81,7 +89,8 @@
beforeEach(function() {
bard.appModule('app.login');
- bard.inject('$q', '$http', '$uibModal', '$rootScope', '$state', '$stateParams');
+ bard.inject('$q', '$http', '$uibModal', '$rootScope', '$state', '$stateParams',
+ '$transitions', 'userService');
bard.mockService($http, {
_default: $q.when([]),
@@ -89,9 +98,15 @@
});
bard.mockService($state, {
- current: { name: 'root.search', params: {} },
+ current: {
+ name: 'root.search',
+ params: {}
+ },
go: function(stateName, stateParams) {
- this.current = { name: stateName, params: stateParams };
+ this.current = {
+ name: stateName,
+ params: stateParams
+ };
return $q.when();
}
});
@@ -99,13 +114,15 @@
bard.mockService($uibModal, {
open: function() {
modalOpened = true;
- return { result: angular.noop };
+ return {
+ result: angular.noop
+ };
}
});
});
- beforeEach(inject(function (_loginService_) {
+ beforeEach(inject(function(_loginService_) {
service = _loginService_;
modalOpened = false;
@@ -116,7 +133,7 @@
$rootScope.$apply();
}));
- it('should be defined', function () {
+ it('should be defined', function() {
expect(service).to.be.defined;
});
diff --git a/app/templates/ui/app/message-board/message-board-component.html b/app/templates/ui/app/message-board/message-board-component.html
new file mode 100644
index 00000000..484e518f
--- /dev/null
+++ b/app/templates/ui/app/message-board/message-board-component.html
@@ -0,0 +1,4 @@
+
+
{{$ctrl.msg.title || $ctrl.msg}}
+
{{$ctrl.msg.body}}
+
diff --git a/app/templates/ui/app/message-board/message-board-dir.html b/app/templates/ui/app/message-board/message-board-dir.html
deleted file mode 100644
index 13d1c899..00000000
--- a/app/templates/ui/app/message-board/message-board-dir.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
{{msg.title || msg}}
-
{{msg.body}}
-
diff --git a/app/templates/ui/app/message-board/message-board.directive.js b/app/templates/ui/app/message-board/message-board.component.js
similarity index 57%
rename from app/templates/ui/app/message-board/message-board.directive.js
rename to app/templates/ui/app/message-board/message-board.component.js
index 9407d98d..422ed524 100644
--- a/app/templates/ui/app/message-board/message-board.directive.js
+++ b/app/templates/ui/app/message-board/message-board.component.js
@@ -1,23 +1,15 @@
-(function () {
+(function() {
'use strict';
angular.module('app.messageBoard')
- .directive('messageBoard', MessageBoardDirective)
- .controller('MessageBoardController', MessageBoardController);
-
- function MessageBoardDirective() {
- return {
- restrict: 'E',
- controller: 'MessageBoardController',
- controllerAs: 'ctrl',
- replace: true,
- scope: {
+ .component('messageBoard', {
+ bindings: {
msg: '='
},
- templateUrl: 'app/message-board/message-board-dir.html'
- };
- }
+ controller: MessageBoardController,
+ templateUrl: 'app/message-board/message-board-component.html',
+ });
MessageBoardController.$inject = ['$scope'];
diff --git a/app/templates/ui/app/root/root.component.js b/app/templates/ui/app/root/root.component.js
new file mode 100644
index 00000000..094df9a2
--- /dev/null
+++ b/app/templates/ui/app/root/root.component.js
@@ -0,0 +1,11 @@
+(function() {
+ 'use strict';
+
+ angular.module('app.root')
+ .component('root', {
+ bindings: {},
+ controller: 'RootCtrl',
+ templateUrl: 'app/root/root.html'
+ });
+
+}());
diff --git a/app/templates/ui/app/root/root.controller.js b/app/templates/ui/app/root/root.controller.js
index d1770458..73e78301 100644
--- a/app/templates/ui/app/root/root.controller.js
+++ b/app/templates/ui/app/root/root.controller.js
@@ -1,16 +1,18 @@
-(function () {
+(function() {
'use strict';
angular.module('app.root')
.controller('RootCtrl', RootCtrl);
- RootCtrl.$inject = ['messageBoardService', 'userService', '$scope'];
+ RootCtrl.$inject = ['messageBoardService', 'userService', 'loginService', '$scope'];
- function RootCtrl(messageBoardService, userService, $scope) {
+ function RootCtrl(messageBoardService, userService, loginService, $scope) {
var ctrl = this;
ctrl.currentYear = new Date().getUTCFullYear();
ctrl.messageBoardService = messageBoardService;
+ loginService.getAuthenticatedStatus();
+
$scope.$watch(userService.currentUser, function(newValue) {
ctrl.currentUser = newValue;
});
diff --git a/app/templates/ui/app/root/root.html b/app/templates/ui/app/root/root.html
index be7b94f5..5d565410 100644
--- a/app/templates/ui/app/root/root.html
+++ b/app/templates/ui/app/root/root.html
@@ -15,7 +15,7 @@
@@ -23,8 +23,8 @@