https://wiki.opendaylight.org/view/OpenDaylight_dlux:Beryllium_Create_A_Module#Define_and_link_the_controller.2C_factory.2C_directive_file
Change-Id: I5b471a5cf9d7840387069062bd75504bba92b0da
Signed-off-by: Alexis de Talhouët <adetalhouet@inocybe.com>
-define(['angularAMD'], function(ng) {
- 'use strict';
+define(['angular'], function (angular) {
+ 'use strict';
- var config = angular.module('config', [])
- .constant('ENV', {
+ var config = angular.module('config', [])
+ .constant('ENV', {
- baseURL: "@@baseURL",
- adSalPort: "@@adSalPort",
- mdSalPort : "@@mdSalPort",
- configEnv : "@@configEnv",
- getBaseURL : function(salType){
- if(salType!==undefined){
- var urlPrefix = "";
- if(this.configEnv==="ENV_DEV"){
- urlPrefix = this.baseURL;
- }else{
- urlPrefix = window.location.protocol+"//"+window.location.hostname+":";
- }
+ baseURL: '@@baseURL',
+ adSalPort: '@@adSalPort',
+ mdSalPort: '@@mdSalPort',
+ configEnv: '@@configEnv',
+ getBaseURL: function (salType) {
+ if (salType !== undefined) {
+ var urlPrefix = '';
+ if (this.configEnv === 'ENV_DEV') {
+ urlPrefix = this.baseURL;
+ } else {
+ urlPrefix = window.location.protocol + '//' + window.location.hostname + ':';
+ }
- if(salType==="AD_SAL"){
- return urlPrefix + this.adSalPort;
- }else if(salType==="MD_SAL"){
- return urlPrefix + this.mdSalPort;
- }
- }
- //default behavior
- return "";
- }
- });
+ if (salType === 'AD_SAL') {
+ return urlPrefix + this.adSalPort;
+ } else if (salType === 'MD_SAL') {
+ return urlPrefix + this.mdSalPort;
+ }
+ }
+ //default behavior
+ return '';
+ }
+ });
- return config;
-});
\ No newline at end of file
+ return config;
+});
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-define(['angularAMD', 'common/config/env.module'], function(ng) {
+define(['angular', './auth.services', 'common/config/env.module'], function (angular, services) {
+ 'use strict';
var auth = angular.module('app.common.auth', ['config']);
+ // services
+ auth.factory('Auth', services.Auth);
+ auth.factory('Base64', services.Base64);
+ auth.factory('NbInterceptor', services.NbInterceptor);
+
return auth;
});
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-define(['common/authentification/auth.module'], function(auth) {
-
- auth.factory('Auth', function($http, $window, Base64, ENV){
- var factory = {};
- // Set Authorization header to username + password
- factory.setBasic = function(user, pw) {
- $window.sessionStorage.odlUser = user;
- $window.sessionStorage.odlPass = pw;
- };
-
- factory.unsetBasic = function() {
- if ($http.defaults.headers.common.Authorization !== null) {
- delete $http.defaults.headers.common.Authorization;
- }
- delete $window.sessionStorage.odlUser;
- delete $window.sessionStorage.odlPass;
- };
-
- // Return the current user object
- factory.getUser = function() {
- var user = $window.sessionStorage.odlUser || null;
- return user;
- };
-
- factory.authorize = function(accessLevel, role) {
- if(role === undefined) {
- role = currentUser.role;
- }
- return accessLevel.bitMask & role.bitMask;
- };
- factory.isAuthed = function () {
- var authed = factory.getUser() ? true : false;
- return authed;
- };
- factory.isLoggedIn = function(user) {
- if(user === undefined) {
- user = currentUser;
- }
- return user.role.title == userRoles.user.title || user.role.title == userRoles.admin.title;
- };
- /*factory.register = function(user, success, error) {
- $http.post('/register', user).success(function(res) {
- changeUser(res);
- success();
- }).error(error);
- };*/
- factory.login = function (user, pw, cb, eb) {
- factory.setBasic(user, pw);
- $http.get(ENV.getBaseURL("MD_SAL") + "/restconf/modules")
- .success(function (data, status, headers, config) {
- cb(data);
- })
- .error(function (resp) {
- if(resp.errors) {
- var errorDetails = resp.errors.error[0];
- if(errorDetails && errorDetails["error-tag"] === "data-missing") {
- // Authentication succeed, but API does not have data, allow to enter
- cb(resp);
- return;
- }
- }
- factory.unsetBasic();
- eb(resp);
- });
- };
- factory.logout = function(success) {
- factory.unsetBasic();
- success();
- };
- return factory;
- });
-
- auth.factory('Base64', function() {
+define([], function () {
+ 'use strict';
+
+ var Auth = function ($http, $window, Base64, ENV) {
+ var factory = {};
+ // Set Authorization header to username + password
+ factory.setBasic = function (user, pw) {
+ $window.sessionStorage.odlUser = user;
+ $window.sessionStorage.odlPass = pw;
+ };
+
+ factory.unsetBasic = function () {
+ if ($http.defaults.headers.common.Authorization !== null) {
+ delete $http.defaults.headers.common.Authorization;
+ }
+ delete $window.sessionStorage.odlUser;
+ delete $window.sessionStorage.odlPass;
+ };
+
+ // Return the current user object
+ factory.getUser = function () {
+ var user = $window.sessionStorage.odlUser || null;
+ return user;
+ };
+
+ factory.authorize = function (accessLevel, role) {
+ if (role === undefined) {
+ role = currentUser.role;
+ }
+ return accessLevel.bitMask & role.bitMask;
+ };
+ factory.isAuthed = function () {
+ var authed = factory.getUser() ? true : false;
+ return authed;
+ };
+ factory.isLoggedIn = function (user) {
+ if (user === undefined) {
+ user = currentUser;
+ }
+ return user.role.title === userRoles.user.title || user.role.title === userRoles.admin.title;
+ };
+ factory.login = function (user, pw, cb, eb) {
+ factory.setBasic(user, pw);
+ $http.get(ENV.getBaseURL('MD_SAL') + '/restconf/modules')
+ .success(function (data) {
+ cb(data);
+ })
+ .error(function (resp) {
+ if (resp.errors) {
+ var errorDetails = resp.errors.error[0];
+ if (errorDetails && errorDetails['error-tag'] === 'data-missing') {
+ // Authentication succeed, but API does not have data, allow to enter
+ cb(resp);
+ return;
+ }
+ }
+ factory.unsetBasic();
+ eb(resp);
+ });
+ };
+ factory.logout = function (success) {
+ factory.unsetBasic();
+ success();
+ };
+ return factory;
+ };
+ Auth.$inject = ['$http', '$window', 'Base64', 'ENV'];
+
+ var Base64 = function () {
var keyStr = 'ABCDEFGHIJKLMNOP' +
'QRSTUVWXYZabcdef' +
'ghijklmnopqrstuv' +
var i = 0;
do {
- chr1 = input.charCodeAt(i++);
- chr2 = input.charCodeAt(i++);
- chr3 = input.charCodeAt(i++);
-
- enc1 = chr1 >> 2;
- enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
- enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
- enc4 = chr3 & 63;
-
- if (isNaN(chr2)) {
- enc3 = enc4 = 64;
- } else if (isNaN(chr3)) {
- enc4 = 64;
- }
+ chr1 = input.charCodeAt(i++);
+ chr2 = input.charCodeAt(i++);
+ chr3 = input.charCodeAt(i++);
+
+ enc1 = chr1 >> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+ enc4 = chr3 & 63;
+
+ if (isNaN(chr2)) {
+ enc3 = enc4 = 64;
+ } else if (isNaN(chr3)) {
+ enc4 = 64;
+ }
- output = output +
- keyStr.charAt(enc1) +
- keyStr.charAt(enc2) +
- keyStr.charAt(enc3) +
- keyStr.charAt(enc4);
- chr1 = chr2 = chr3 = "";
- enc1 = enc2 = enc3 = enc4 = "";
+ output = output +
+ keyStr.charAt(enc1) +
+ keyStr.charAt(enc2) +
+ keyStr.charAt(enc3) +
+ keyStr.charAt(enc4);
+ chr1 = chr2 = chr3 = "";
+ enc1 = enc2 = enc3 = enc4 = "";
} while (i < input.length);
return output;
var base64test = /[^A-Za-z0-9\+\/\=]/g;
if (base64test.exec(input)) {
alert("There were invalid base64 characters in the input text.\n" +
- "Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\n" +
- "Expect errors in decoding.");
+ "Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\n" +
+ "Expect errors in decoding.");
}
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
- output = output + String.fromCharCode(chr2);
+ output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
- output = output + String.fromCharCode(chr3);
+ output = output + String.fromCharCode(chr3);
}
chr1 = chr2 = chr3 = "";
return output;
}
};
- });
+ };
// Filter to add authorization header if its a nb api call
- auth.factory('NbInterceptor', function($q, $window, Base64) {
+ var NbInterceptor = function ($q, $window, Base64) {
return {
- request : function(config) {
- // Use AAA basic authentication
- if (config.url.indexOf('restconf') != -1 || config.url.indexOf('apidoc') != -1) {
+ request: function (config) {
+ // Use AAA basic authentication
+ if (config.url.indexOf('restconf') !== -1 || config.url.indexOf('apidoc') !== -1) {
config.headers = config.headers || {};
if ($window.sessionStorage.odlUser && $window.sessionStorage.odlPass) {
var encoded = Base64.encode($window.sessionStorage.odlUser + ':' + $window.sessionStorage.odlPass);
}
return config;
},
- response : function(response) {
+ response: function (response) {
return response || $q.when(response);
}
};
- });
+ };
+ NbInterceptor.$inject = ['$q', '$window', 'Base64'];
+
+ return {
+ Auth: Auth,
+ Base64: Base64,
+ NbInterceptor: NbInterceptor
+ };
+
});
-define(['common/authentification/auth.services'], function() {
- describe('Auth Module', function() {
+define(['common/authentification/auth.module'], function () {
+ describe('Auth Module', function () {
var _Auth, httpBackend, deferred;
beforeEach(module('app.common.auth'));
- beforeEach(inject(function($injector) {
+ beforeEach(inject(function ($injector) {
_Auth = $injector.get('Auth');
httpBackend = $injector.get('$httpBackend');
}));
- it('Should have defined function facilate the authentication process', function() {
+ it('Should have defined function facilate the authentication process', function () {
expect(_Auth.setBasic).toBeDefined();
expect(_Auth.unsetBasic).toBeDefined();
expect(_Auth.getUser).toBeDefined();
expect(_Auth.logout).toBeDefined();
});
- describe(':: Authentication header', function() {
+ describe(':: Authentication header', function () {
var username = 'john',
- password = 'abc123',
- _window = null;
+ password = 'abc123',
+ _window = null;
- beforeEach(inject(function($window) {
+ beforeEach(inject(function ($window) {
_window = $window;
}));
- it('Should set the basic authenticate header', function() {
+ it('Should set the basic authenticate header', function () {
_Auth.setBasic(username, password);
expect(_window.sessionStorage.odlUser).toBeDefined();
expect(_window.sessionStorage.odlPass).toEqual(password);
});
- it('Should unset the basic authenticate header', inject(function($http) {
+ it('Should unset the basic authenticate header', inject(function ($http) {
_Auth.setBasic(username, password);
_Auth.unsetBasic();
}));
});
- describe(':: Login management', function() {
+ describe(':: Login management', function () {
var username = 'john',
- password = 'abc123';
+ password = 'abc123';
- it('Should return the current user or null otherwise', function() {
+ it('Should return the current user or null otherwise', function () {
var user = _Auth.getUser();
expect(user).toBeNull();
expect(user).toEqual(user);
});
- it('Should set the authentication header and send a callback if success', function() {
- httpBackend.expect('GET',/.*/).respond(200, '');
+ it('Should set the authentication header and send a callback if success', function () {
+ httpBackend.expect('GET', /.*/).respond(200, '');
var successSpy = jasmine.createSpy("successSpy");
var errorSpy = jasmine.createSpy("errorSpy");
spyOn(_Auth, 'setBasic');
expect(errorSpy).not.toHaveBeenCalled();
});
- it('Should unset the authentication header and send a callback if error', function() {
- httpBackend.expect('GET',/.*/).respond(404, '');
+ it('Should unset the authentication header and send a callback if error', function () {
+ httpBackend.expect('GET', /.*/).respond(404, '');
var successSpy = jasmine.createSpy("successSpy");
var errorSpy = jasmine.createSpy("errorSpy");
spyOn(_Auth, 'setBasic');
expect(errorSpy).toHaveBeenCalled();
});
- it('Should unset the authentication header on logout', function() {
+ it('Should unset the authentication header on logout', function () {
var successSpy = jasmine.createSpy("successSpy");
spyOn(_Auth, 'unsetBasic');
expect(successSpy).toHaveBeenCalled();
});
- afterEach(function() {
+ afterEach(function () {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
// This module is used to populate views from the index.tpl.html
-// Each module will register html pages with the appropriate HelperProvider's and this module will take everything from those Helpers and fill the view.
-define(['angularAMD' ,'angular-ui-router', 'ocLazyLoad', 'common/general/common.general.directives', 'common/general/common.navigation.directives','app/core/core.services'], function(app) {
+// Each module will register html pages with the appropriate HelperProvider's
+// and this module will take everything from those Helpers and fill the view.
+define(['angular', 'angular-ui-router', 'ocLazyLoad', 'common/general/common.general.directives',
+ 'common/general/common.navigation.directives', 'app/core/core.module'], function (angular) {
+ 'use strict';
+
var layout = angular.module('app.common.layout', ['ui.router.state', 'app.core', 'app.common.general', 'app.common.navigation']);
- layout.config(function($stateProvider, $urlRouterProvider, TopBarHelperProvider, NavHelperProvider, ContentHelperProvider) {
- $urlRouterProvider.otherwise("/topology");
+ layout.config(function ($stateProvider, TopBarHelperProvider, NavHelperProvider, ContentHelperProvider) {
$stateProvider.state('main', {
url: '/',
- views : {
- 'mainContent@' : {
+ views: {
+ 'mainContent@': {
controller: 'AppCtrl',
- templateUrl : 'src/common/layout/index.tpl.html'
+ templateUrl: 'src/common/layout/index.tpl.html'
},
- 'navigation@main' : {
+ 'navigation@main': {
template: NavHelperProvider.getViews(),
controller: 'NavCtrl'
},
- 'topbar@main' : {
- template : TopBarHelperProvider.getViews(),
+ 'topbar@main': {
+ template: TopBarHelperProvider.getViews(),
controller: 'TopbarCtrl'
},
- 'content@main' : {
- template : ContentHelperProvider.getViews()
+ 'content@main': {
+ template: ContentHelperProvider.getViews()
}
},
resolve: {
- loadCtrl: ['$ocLazyLoad', function($ocLazyLoad) {
+ loadCtrl: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load({
files: ['app/app.controller'].concat(TopBarHelperProvider.getControllers()).concat(NavHelperProvider.getControllers())
});
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-define(['angularAMD', 'jquery', 'common/authentification/auth.services', 'ocLazyLoad'], function(ng, $) {
+define(['angularAMD', 'jquery', 'common/authentification/auth.module', 'ocLazyLoad'], function (ng, $) {
var login = angular.module('app.common.login', ['app.common.auth', 'ui.router.state']);
- login.config(function($stateProvider, $httpProvider) {
+ login.config(function ($stateProvider, $httpProvider) {
$stateProvider
.state('login', {
url: '/login',
views: {
- 'mainContent@' : {
+ 'mainContent@': {
templateUrl: 'src/common/login/login.tpl.html',
- controller : 'LoginCtrl'
+ controller: 'LoginCtrl'
}
},
resolve: {
- loadController: ['$ocLazyLoad', function($ocLazyLoad) {
+ loadController: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load({
files: ['src/common/login/login.controller.js']
});
$httpProvider.interceptors.push('NbInterceptor');
});
- login.run(function($rootScope, $location, Auth) {
+ login.run(function ($rootScope, $location, Auth) {
// to avoid recursive loop
var publicPath = ['/login'];
- var isPublicPath = function(route) {
+ var isPublicPath = function (route) {
var found = false;
- $.each(publicPath, function(key, value) {
+ $.each(publicPath, function (key, value) {
found = found || route.match('^' + value);
});
return found;
};
- $rootScope.$on('$stateChangeStart', function() {
+ $rootScope.$on('$stateChangeStart', function () {
if (!isPublicPath($location.url()) && !Auth.isAuthed()) {
$location.path('/login');
}
<a href="{{item.link}}" ng-if="isValid(item.submenu)" target="_self" ng-click="updateTemplate($event, item)">
- <i class="{{item.icon}}"></i>
- {{item.title | translate}}
- <span ng-show="isValid(item.submenu)" class="arrow icon-angle-down"></span>
+ <i class="{{item.icon}}"></i> {{item.title | translate}}
+ <span ng-show="isValid(item.submenu)" class="arrow icon-angle-down"></span>
</a>
<a href="{{item.link}}" target="_self" ng-if="!isValid(item.submenu)">
- <i class="{{item.icon}}"></i>
- {{item.title | translate}}
+ <i class="{{item.icon}}"></i> {{item.title | translate}}
</a>
<ul class="nav nav-second-level collapse" style="display: {{display}}">
- <li ng-class="{ active: (isState(item.active) && !isValid(item.submenu)) }" ng-controller="navItemCtrl" ng-repeat="item in item.submenu"
- ng-include="'src/common/navigation/nav_item_template.tpl.html'">
-
- </li>
-
+ <li ng-class="{ active: (isState(item.active) && !isValid(item.submenu)) }" ng-controller="NavItemCtrl" ng-repeat="item in item.submenu" ng-include="'src/common/navigation/nav_item_template.tpl.html'">
+ </li>
</ul>
-define(['common/navigation/navigation.module', 'app/core/core.services', 'common/navigation/navigation.services'], function(nav, services) {
- nav.controller('NavCtrl', function($scope, NavHelper) {
+define(['angular'], function (angular) {
+ 'use strict';
+
+ var NavCtrl = function ($scope, NavHelper) {
$scope.navList = NavHelper.getMenu();
- });
+ };
+ NavCtrl.$inject = ['$scope', 'NavHelper'];
- nav.controller('navItemCtrl', function($scope, NavHelper) {
+ var NavItemCtrl = function ($scope) {
$scope.display = 'none';
$scope.isOpen = false;
$scope.isValid = function (value) {
if (angular.isUndefined(value) || value === null) {
return false;
- }
- else {
+ } else {
return true;
}
};
- $scope.updateTemplate = function (e, item) {
+ $scope.updateTemplate = function (e) {
e.stopPropagation();
e.preventDefault();
$scope.isOpen = !$scope.isOpen;
- if ($scope.display == 'none') {
+ if ($scope.display === 'none') {
$scope.display = 'block';
- }
- else {
+ } else {
$scope.display = 'none';
}
};
- });
+ };
+ NavItemCtrl.$inject = ['$scope', 'NavHelper'];
+
+ return {
+ NavCtrl: NavCtrl,
+ NavItemCtrl: NavItemCtrl
+ };
});
-define(['angularAMD', 'app/core/core.module' ,'app/core/core.services','Restangular', 'common/config/env.module'], function (ng) {
- var nav = angular.module('app.common.nav', ['app.core','restangular', 'config']);
+define(['angular', './navigation.controller', './navigation.services', 'app/core/core.module',
+ 'Restangular', 'common/config/env.module'], function (angular, controller, services) {
- nav.config( function($stateProvider, NavHelperProvider) {
+ 'use strict';
+ var nav = angular.module('app.common.nav', ['app.core', 'restangular', 'config']);
+
+ nav.config(function (NavHelperProvider) {
NavHelperProvider.addToView('src/common/navigation/navigation.tpl.html');
NavHelperProvider.addControllerUrl('common/navigation/navigation.controller');
});
+ // controllers
+ nav.controller('NavCtrl', controller.NavCtrl);
+ nav.controller('NavItemCtrl', controller.NavItemCtrl);
+
+ // services
+ nav.factory('MDSalRestangular', services.MDSalRestangular);
+
return nav;
});
-define(['common/navigation/navigation.module'], function(nav) {
+define([], function () {
+ 'use strict';
- nav.factory('MDSalRestangular', function(Restangular, ENV) {
- return Restangular.withConfig(function(RestangularConfig) {
- RestangularConfig.setBaseUrl(ENV.getBaseURL("MD_SAL"));
- });
+ var MDSalRestangular = function (Restangular, ENV) {
+ return Restangular.withConfig(function (RestangularConfig) {
+ RestangularConfig.setBaseUrl(ENV.getBaseURL('MD_SAL'));
});
+ };
+ MDSalRestangular.$inject = ['Restangular', 'ENV'];
+ return {
+ MDSalRestangular: MDSalRestangular
+ };
});
-define(['common/navigation/navigation.controller'], function() {
- describe('Navigation Module', function(){
+define(['common/navigation/navigation.module'], function () {
+ describe('Navigation Module', function () {
var scope, NavHelperMock, EventMock, controller, NavHelperProviderMock;
beforeEach(angular.mock.module('ui.router'));
- beforeEach(module('app.core', function($provide) {
+ beforeEach(module('app.core', function ($provide) {
function NavHelperProvider() {
- this.addToView = function(url) {};
- this.addControllerUrl = function(url) {};
- this.$get = function NavHelperFactory() {
+ this.addToView = function (url) {};
+ this.addControllerUrl = function (url) {};
+ this.$get = function NavHelperFactory() {
return new NavHelperProvider();
};
}
beforeEach(module('app.common.nav'));
- beforeEach(inject(function($rootScope, $controller){
+ beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
controller = $controller;
NavHelperMock = {
- getMenu: function() {
+ getMenu: function () {
return {
- "id" : "",
- "title" : "",
- "active" : "",
- "submenu" : ""
+ "id": "",
+ "title": "",
+ "active": "",
+ "submenu": ""
};
}
};
EventMock = {
- stopPropagation: function() {
+ stopPropagation: function () {
return null;
},
- preventDefault: function() {
+ preventDefault: function () {
return null;
}
};
}));
- it('Should have receive all menu items', function() {
+ it('Should have receive all menu items', function () {
spyOn(NavHelperMock, 'getMenu').andCallThrough();
- controller('NavCtrl', {$scope: scope, NavHelper:NavHelperMock });
+ controller('NavCtrl', {
+ $scope: scope,
+ NavHelper: NavHelperMock
+ });
expect(NavHelperMock.getMenu).toHaveBeenCalled();
expect(scope.navList).toBeDefined();
});
- it('Should have create utility methods to show and hide submenu', function() {
- controller('navItemCtrl', {$scope: scope, NavHelper:NavHelperMock });
+ it('Should have create utility methods to show and hide submenu', function () {
+ controller('NavItemCtrl', {
+ $scope: scope,
+ NavHelper: NavHelperMock
+ });
expect(scope.display).toEqual('none');
expect(scope.isOpen).toBeFalsy();
expect(scope.updateTemplate).toBeDefined();
});
- it('Should look if a item exist or not', function(){
- controller('navItemCtrl', {$scope: scope, NavHelper:NavHelperMock });
+ it('Should look if a item exist or not', function () {
+ controller('NavItemCtrl', {
+ $scope: scope,
+ NavHelper: NavHelperMock
+ });
var item = {};
expect(scope.isValid(item)).toBeTruthy();
expect(scope.isValid(null)).toBeFalsy();
});
- it('Should toggle the status of the item scope', function() {
+ it('Should toggle the status of the item scope', function () {
spyOn(EventMock, 'stopPropagation').andCallThrough();
spyOn(EventMock, 'preventDefault').andCallThrough();
- controller('navItemCtrl', {$scope: scope, NavHelper:NavHelperMock });
+ controller('NavItemCtrl', {
+ $scope: scope,
+ NavHelper: NavHelperMock
+ });
var initOpen = scope.isOpen;
var initDisplay = scope.display;
- scope.updateTemplate(EventMock, { });
+ scope.updateTemplate(EventMock, {});
expect(scope.isOpen).not.toEqual(initOpen);
expect(scope.display).not.toEqual(initDisplay);
- scope.updateTemplate(EventMock, { });
+ scope.updateTemplate(EventMock, {});
expect(scope.isOpen).toEqual(initOpen);
expect(scope.display).toEqual(initDisplay);
- <div class="sidebar-collapse">
- <ul id="side-menu" class="nav">
- <!--
-
- We don't need the side-search for now...
- <li class="sidebar-search">
- <div class="input-group custom-search-form">
- <input class="form-control" placeholder="Search..." type="text">
- <span class="input-group-btn">
- <button class="btn btn-default" type="button">
- <i class="icon-search"></i>
- </button>
- </span>
- </div>
- </li>
- -->
- <li ng-class="{ active: (isState(item.active) && !isValid(item.submenu))}" ng-controller="navItemCtrl" ng-repeat="item in navList"
- ng-include="'src/common/navigation/nav_item_template.tpl.html'" ng-type="{{item.id}}">
-
-
- </li>
-
- <ul>
+<div class="sidebar-collapse">
+ <ul id="side-menu" class="nav">
+ <li ng-class="{ active: (isState(item.active) && !isValid(item.submenu))}" ng-controller="NavItemCtrl" ng-repeat="item in navList" ng-include="'src/common/navigation/nav_item_template.tpl.html'" ng-type="{{item.id}}">
+ </li>
+ </ul>
</div>
-define(['angularAMD'], function() {
+define(['angular', './core.services'], function (angular, services) {
+ 'use strict';
var core = angular.module('app.core', []);
- return core;
+ core.provider('ContentHelper', services.ContentHelper);
+ core.provider('NavHelper', services.NavHelper);
+ core.provider('TopBarHelper', services.TopBarHelper);
+ return core;
});
-define(['app/core/core.module', 'jquery'], function(core, $) {
- core.provider('TopBarHelper', function TopBarHelperProvider() {
+define(['jquery'], function ($) {
+ 'use strict';
+
+ var TopBarHelper = function () {
var ids = [];
var ctrls = [];
- this.addToView = function(url) {
- $.ajax({
- url : url,
- method: 'GET',
- async : false
- }).done(function(data) {
- ids.push(data);
- });
+ this.addToView = function (url) {
+ $.ajax({
+ url: url,
+ method: 'GET',
+ async: false
+ }).done(function (data) {
+ ids.push(data);
+ });
};
- this.getViews = function() {
- var template = "";
+ this.getViews = function () {
+ var template = '';
- for(var i = 0; i < ids.length; ++i) {
+ for (var i = 0; i < ids.length; ++i) {
template += ids[i];
}
return template;
};
- this.addControllerUrl = function(url) {
+ this.addControllerUrl = function (url) {
ctrls.push(url);
};
- this.getControllers = function() {
+ this.getControllers = function () {
return ctrls;
};
- this.$get = ['apiToken', function TopBarHelper(apiToken) {
- return new TopBarHelperProvider(apiToken);
+ this.$get = ['apiToken', function (apiToken) {
+ return new TopBarHelper(apiToken);
}];
+ };
- });
-
- core.provider('NavHelper', function() {
+ var NavHelper = function () {
var ids = [];
var ctrls = [];
var menu = [];
function NavHelperProvider() {
- this.addToView = function(url) {
- $.ajax({
- url : url,
- method: 'GET',
- async : false
- }).done(function(data) {
- ids.push(data);
- });
+ this.addToView = function (url) {
+ $.ajax({
+ url: url,
+ method: 'GET',
+ async: false
+ }).done(function (data) {
+ ids.push(data);
+ });
};
- this.getViews = function() {
- var template = "";
+ this.getViews = function () {
+ var template = '';
- for(var i = 0; i < ids.length; ++i) {
+ for (var i = 0; i < ids.length; ++i) {
template += ids[i];
}
return template;
};
- this.addControllerUrl = function(url) {
+ this.addControllerUrl = function (url) {
ctrls.push(url);
};
- this.getControllers = function() {
+ this.getControllers = function () {
return ctrls;
};
- getMenuWithId = function(menu, level) {
- if(menu === undefined) {
+ var getMenuWithId = function (menu, level) {
+ if (menu === undefined) {
return null;
}
var currentLevel = level[0];
- var menuItem = $.grep(menu, function(item) {
- return item.id == currentLevel;
+ var menuItem = $.grep(menu, function (item) {
+ return item.id === currentLevel;
})[0];
if (level.length === 1) {
}
};
- this.addToMenu = function(id, obj) {
- var lvl = id.split(".");
- obj["id"] = lvl.pop();
+ this.addToMenu = function (id, obj) {
+ var lvl = id.split('.');
+ obj.id = lvl.pop();
if (lvl.length === 0) {
menu.push(obj);
} else {
var menuItem = getMenuWithId(menu, lvl);
- if(menuItem) {
- if(!menuItem.submenu) {
- menuItem.submenu = [];
- }
- menuItem.submenu.push(obj);
- } else {
- var submenu = {
- "id" : lvl[0],
- "title" : lvl[0],
- "active" : "",
- "submenu" : [obj]
+ if (menuItem) {
+ if (!menuItem.submenu) {
+ menuItem.submenu = [];
+ }
+ menuItem.submenu.push(obj);
+ } else {
+ var submenu = {
+ 'id': lvl[0],
+ 'title': lvl[0],
+ 'active': '',
+ 'submenu': [obj]
};
menu.push(submenu);
}
}
};
- this.getMenu = function() {
+ this.getMenu = function () {
return menu;
};
- this.$get = function NavHelperFactory() {
+ this.$get = function NavHelperFactory() {
return new NavHelperProvider();
};
}
return persistentProvider;
- });
+ };
- core.provider('ContentHelper', function() {
+ var ContentHelper = function () {
var ids = [];
var ctrls = [];
function ContentHelperProvider() {
- this.addToView = function(url) {
- $.ajax({
- url : url,
- method: 'GET',
- async : false
- }).done(function(data) {
- ids.push(data);
- });
+ this.addToView = function (url) {
+ $.ajax({
+ url: url,
+ method: 'GET',
+ async: false
+ }).done(function (data) {
+ ids.push(data);
+ });
};
- this.getViews = function() {
- var template = "";
+ this.getViews = function () {
+ var template = '';
- for(var i = 0; i < ids.length; ++i) {
+ for (var i = 0; i < ids.length; ++i) {
template += ids[i];
}
return template;
};
- this.addControllerUrl = function(url) {
+ this.addControllerUrl = function (url) {
ctrls.push(url);
};
- this.getControllers = function() {
+ this.getControllers = function () {
return ctrls;
};
- this.$get = function ContentHelperFactory() {
+ this.$get = function ContentHelperFactory() {
return new ContentHelperProvider();
};
}
return persistentProvider;
- });
+ };
+
+ return {
+ ContentHelper: ContentHelper,
+ NavHelper: NavHelper,
+ TopBarHelper: TopBarHelper
+ };
+
});
var allTestFiles = [];
var TEST_REGEXP = /spec\.js$/;
-var pathToModule = function(path) {
+var pathToModule = function (path) {
return path.replace(/^\/base\/src\//, '').replace(/\.js$/, '');
};
-Object.keys(window.__karma__.files).forEach(function(file) {
+Object.keys(window.__karma__.files).forEach(function (file) {
if (TEST_REGEXP.test(file)) {
- if (file.indexOf('yang') < 0 ) { // yang spec are broken
+ if (file.indexOf('yang') < 0) { // yang spec are broken
allTestFiles.push(pathToModule(file));
}
}
});
-var run = function() {
- test(allTestFiles, function() {
+var run = function () {
+ test(allTestFiles, function () {
console.log('Starting Karma');
window.__karma__.start();
});
};
var test = require.config({
- baseUrl : '/base/src',
- paths : {
- 'angular' : '../vendor/angular/angular',
- 'angular-mocks' : '../vendor/angular-mocks/angular-mocks',
- 'ui-bootstrap' : '../vendor/angular-bootstrap/ui-bootstrap-tpls.min',
- 'Restangular' : '../vendor/restangular/dist/restangular.min',
- 'underscore' : '../vendor/underscore/underscore',
- 'angular-ui-router' : '../vendor/angular-ui-router/release/angular-ui-router',
- 'angular-css-injector' : '../vendor/angular-css-injector/angular-css-injector',
- 'angular-cookies' : '../vendor/angular-cookies/angular-cookies.min',
- 'angular-translate' : '../vendor/angular-translate/angular-translate.min',
- 'angular-translate-loader-static-files' : '../vendor/angular-translate-loader-static-files/angular-translate-loader-static-files.min',
- 'jquery' : '../vendor/jquery/jquery',
- 'jquery-ui' : '../vendor/jquery-ui/jquery-ui.min',
- 'footable' : '../vendor/footable/dist/footable.min',
- 'd3' : '../vendor/d3/d3.min',
- 'vis' : '../vendor/vis/dist/vis.min',
- 'ocLazyLoad' : '../vendor/ocLazyLoad/dist/ocLazyLoad',
- 'sigma' : '../vendor/sigma/sigma.min',
- 'sigma-parsers-gexf' : '../vendor/sigma/plugins/sigma.parsers.gexf.min',
- 'sigma-forceAtlas2' : '../vendor/sigma/plugins/sigma.layout.forceAtlas2.min',
- 'sigma-dragNodes' : '../vendor/sigma/plugins/sigma.plugins.dragNodes.min',
- 'sigma-customShapes' : '../vendor/sigma/plugins/sigma.renderers.customShapes.min',
- 'ngSlider' : '../vendor/ng-slider/dist/ng-slider.min'
+ baseUrl: '/base/src',
+ paths: {
+ 'angular': '../vendor/angular/angular',
+ 'angular-mocks': '../vendor/angular-mocks/angular-mocks',
+ 'ui-bootstrap': '../vendor/angular-bootstrap/ui-bootstrap-tpls.min',
+ 'Restangular': '../vendor/restangular/dist/restangular.min',
+ 'underscore': '../vendor/underscore/underscore',
+ 'angular-ui-router': '../vendor/angular-ui-router/release/angular-ui-router',
+ 'angular-css-injector': '../vendor/angular-css-injector/angular-css-injector',
+ 'angular-cookies': '../vendor/angular-cookies/angular-cookies.min',
+ 'angular-translate': '../vendor/angular-translate/angular-translate.min',
+ 'angular-sanitize': '../vendor/angular-sanitize/angular-sanitize.min',
+ 'angular-translate-loader-static-files': '../vendor/angular-translate-loader-static-files/angular-translate-loader-static-files.min',
+ 'jquery': '../vendor/jquery/jquery.min',
+ 'jquery-ui': '../vendor/jquery-ui/jquery-ui.min',
+ 'footable': '../vendor/footable/dist/footable.min',
+ 'd3': '../vendor/d3/d3.min',
+ 'ocLazyLoad': '../vendor/ocLazyLoad/dist/ocLazyLoad',
+ 'vis': '../vendor/vis/dist/vis.min',
+ 'sigma': '../vendor/sigma/sigma.min',
+ 'sigma-parsers-gexf': '../vendor/sigma/plugins/sigma.parsers.gexf.min',
+ 'sigma-forceAtlas2': '../vendor/sigma/plugins/sigma.layout.forceAtlas2.min',
+ 'sigma-dragNodes': '../vendor/sigma/plugins/sigma.plugins.dragNodes.min',
+ 'sigma-customShapes': '../vendor/sigma/plugins/sigma.renderers.customShapes.min',
+ 'ngSlider': '../vendor/ng-slider/dist/ng-slider.min',
+ 'ZeroClipboard': '../vendor/zeroclipboard/dist/ZeroClipboard',
+ 'ngClip': '../vendor/ng-clip/src/ngClip',
+ 'angular-translate-loader-partial': '../vendor/angular-translate-loader-partial/angular-translate-loader-partial'
},
- map:{
+ map: {
'*': {
'angularAMD': 'angular'
- }
+ }
},
- shim : {
- 'angular' : ['jquery'],
- 'angular-mocks' : ['angular'],
- 'ocLazyLoad' : ['angular'],
- 'Restangular' : ['angular', 'underscore'],
- 'ui-bootstrap' : ['angular'],
- 'angular-css-injector' : ['angular'],
- 'angular-ui-router' : ['angular'],
- 'angular-cookies' : ['angular'],
+ shim: {
+ 'angular-mocks': ['angular'],
+ 'ocLazyLoad': ['angular'],
+ 'Restangular': ['angular', 'underscore'],
+ 'ui-bootstrap': ['angular'],
+ 'angular-css-injector': ['angular'],
+ 'angular-ui-router': ['angular'],
+ 'angular-cookies': ['angular'],
'angular-translate': ['angular'],
- 'angular-translate-loader-static-files' : ['angular-translate'],
- 'vis' : {
- exports: 'vis'
+ 'angular-sanitize': ['angular'],
+ 'angular-translate-loader-static-files': ['angular-translate'],
+ 'vis': {
+ exports: 'vis'
+ },
+ 'jquery': {
+ exports: '$'
},
- 'jquery' : {
- exports : '$'
+ 'jquery-ui': ['jquery'],
+ 'angular': {
+ deps: ['jquery', 'jquery-ui'],
+ exports: 'angular'
},
- 'footable' : ['jquery'],
- 'undescore' : {
- exports : '_'
+ 'footable': ['jquery'],
+ 'undescore': {
+ exports: '_'
},
- 'sticky' : ['jquery', 'angular'],
- 'sigma-parsers-gexf' : ['sigma'],
- 'sigma-forceAtlas2' : ['sigma'],
- 'sigma-dragNodes' : ['sigma'],
- 'sigma-customShapes' : ['sigma'],
- 'ngSlider' : ['angular']
+ 'sticky': ['jquery', 'angular'],
+ 'sigma-parsers-gexf': ['sigma'],
+ 'sigma-forceAtlas2': ['sigma'],
+ 'sigma-dragNodes': ['sigma'],
+ 'sigma-customShapes': ['sigma'],
+ 'ngSlider': ['angular'],
+ 'ZeroClipboard': ['angular'],
+ 'ngClip': ['angular', 'ZeroClipboard'],
+ 'angular-translate-loader-partial': ['angular-translate']
},
- deps : ['angular', 'angular-mocks'],
+
+ deps: ['angular', 'angular-mocks'],
callback: run
});