| 'use strict'; |
| |
| angular.module('xos.tenant', [ |
| 'ngResource', |
| 'ngCookies', |
| 'ui.router', |
| 'xos.helpers' |
| ]) |
| .config(($stateProvider) => { |
| $stateProvider |
| .state('user-list', { |
| url: '/', |
| template: '<users-list></users-list>' |
| }) |
| .state('site', { |
| url:'/site/:id', |
| template:'<site-detail></site-detail>' |
| |
| }) |
| .state('createslice', { |
| url:'/site/:site/slice/', |
| template:'<create-slice></create-slice>' |
| |
| }) |
| .state('editslice', { |
| url:'/site/:site/slice/:id?', |
| template:'<edit-slice></edit-slice>' |
| |
| });; |
| |
| }) |
| .config(function($httpProvider){ |
| $httpProvider.interceptors.push('NoHyperlinks'); |
| }) |
| .directive('usersList', function(){ |
| return { |
| //sites : {}, |
| restrict: 'E', |
| scope: {}, |
| bindToController: true, |
| controllerAs: 'vm', |
| templateUrl: 'templates/users-list.tpl.html', |
| controller: function(Sites,SlicesPlus){ |
| |
| |
| |
| this.tableConfig = { |
| columns: [ |
| { |
| label: 'Site1', |
| prop: 'name', |
| link: item => `/#/site/${item.id}` |
| }, |
| { |
| label: 'Allocated', |
| prop: 'instance_total' |
| }, |
| { |
| label: 'Ready', |
| prop: 'instance_total_ready' |
| } |
| ] |
| }; |
| |
| var sites; |
| // retrieving user list |
| Sites.query().$promise |
| .then((users) => { |
| this.sites = users; |
| return SlicesPlus.query().$promise |
| }) |
| .then((users) => { |
| this.slices = users; |
| //console.log(this.sites,this.slices); |
| this.site_list = this.returnData(this.sites,this.slices); |
| }) |
| .catch((e) => { |
| throw new Error(e); |
| }); |
| //console.log(sites); |
| |
| |
| this.returnData = (sites,slices) => { |
| //console.log(sites,slices); |
| //console.log(sites.length) |
| var i,j=0; |
| var site_list=[]; |
| var slice_list = []; |
| |
| for(i = 0; i<sites.length; i++){ |
| var instance_t = 0; |
| var instance_t_r = 0; |
| for(j=0;j<slices.length;j++){ |
| if (sites[i].id != null && slices[j].site !=null && sites[i].id == slices[j].site){ |
| console.log(sites[i].id,slices[j].id); |
| instance_t = instance_t + slices[j].instance_total; |
| instance_t_r = instance_t_r + slices[j].instance_total_ready; |
| } |
| } |
| var data_sites = { |
| 'id': sites[i].id, |
| 'name': sites[i].name, |
| 'instance_total' :instance_t, |
| 'instance_total_ready' : instance_t_r |
| }; |
| //console.log(sites[i].id); |
| site_list.push(data_sites); |
| } |
| return site_list |
| //this.site_list = site_list; |
| } |
| } |
| }; |
| }) |
| .directive('siteDetail', function(){ |
| return { |
| restrict: 'E', |
| scope: {}, |
| bindToController: true, |
| controllerAs: 'sl', |
| templateUrl: 'templates/slicelist.html', |
| controller: function(SlicesPlus,$stateParams){ |
| console.log($stateParams); |
| this.siteId = $stateParams.id; |
| this.tableConfig = { |
| columns: [ |
| { |
| label: 'Slice List', |
| prop: 'name', |
| link: item => `/#/site/${item.site}/slice/${item.id}` |
| }, |
| { |
| label: 'Allocated', |
| prop: 'instance_total' |
| }, |
| { |
| label: 'Ready', |
| prop: 'instance_total_ready' |
| } |
| ] |
| }; |
| |
| // retrieving user list |
| SlicesPlus.query({ |
| site:$stateParams.id |
| }).$promise |
| .then((users) => { |
| this.users = users; |
| }) |
| .catch((e) => { |
| throw new Error(e); |
| }); |
| } |
| }; |
| }) |
| .directive('createSlice', function(){ |
| return { |
| //sites : {}, |
| restrict: 'E', |
| scope: {}, |
| bindToController: true, |
| controllerAs: 'cs', |
| templateUrl: 'templates/createslice.html', |
| controller: function(Slices,SlicesPlus,$stateParams){ |
| //var sites; |
| //console.log(this.users.name); |
| |
| //console.log(this.config); |
| this.config = { |
| exclude: ['password', 'last_login'], |
| formName: 'SliceDetails', |
| actions: [ |
| { |
| label: 'Save', |
| icon: 'ok', // refers to bootstraps glyphicon |
| cb: (user) => { // receive the model |
| console.log(user); |
| }, |
| class: 'success' |
| },{ |
| label: 'Save and continue editing', |
| icon: 'ok', // refers to bootstraps glyphicon |
| cb: (user) => { // receive the model |
| console.log(user); |
| }, |
| class: 'primary' |
| },{ |
| label: 'Save and add another', |
| icon: 'ok', // refers to bootstraps glyphicon |
| cb: (user) => { // receive the model |
| console.log(user); |
| }, |
| class: 'primary' |
| } |
| ], |
| fields: |
| { |
| site_select : { |
| label:'Site', |
| type:'select', |
| validators:{ required: true,}, |
| hint : 'The Site this Slice belongs to', |
| options:[ |
| { |
| id:0, |
| label:"---Site---" |
| }, |
| { |
| id:1, |
| label:"---Site1---" |
| }], |
| |
| }, |
| first_name: { |
| label:'Name', |
| type: 'string', |
| hint: 'The Name of the Slice', |
| validators: { |
| required: true |
| } |
| }, |
| service_class : { |
| label:'ServiceClass', |
| type:'select', |
| validators:{ required: true,}, |
| hint : 'The Site this Slice belongs to', |
| options:[ |
| { |
| id:0, |
| label:"Best effort" |
| }, |
| ], |
| }, |
| enabled: { |
| label: 'Enabled', |
| type : 'boolean', |
| hint:'Status for this Slice' |
| }, |
| description: { |
| label: 'Description', |
| type : 'string', |
| hint:'High level description of the slice and expected activities', |
| validators: { |
| required: false, |
| minlength: 10 |
| } |
| }, |
| service : { |
| label:'Service', |
| type:'select', |
| validators:{ required: false,}, |
| options:[ |
| { |
| id:0, |
| label:"--------" |
| }, |
| ], |
| }, |
| slice_url: { |
| label: 'Slice url', |
| type : 'string', |
| validators: { |
| required: false, |
| minlength: 10 |
| } |
| }, |
| max_instances: { |
| type: 'Max Instances', |
| validators: { |
| required: false, |
| min: 0 |
| } |
| }, |
| default_isolation : { |
| label:'Default Isolation', |
| type:'select', |
| validators:{ required: false,}, |
| options:[ |
| { |
| id:0, |
| label:"Virtual Machine" |
| },{ |
| id:1, |
| label:"Container" |
| },{ |
| id:2, |
| label:"Container in VM" |
| }, |
| ], |
| }, |
| default_image : { |
| label:'Default image', |
| type:'select', |
| validators:{ required: false,}, |
| options:[ |
| { |
| id:0, |
| label:"trusty-server-multi-nic" |
| }, |
| ], |
| }, |
| network : { |
| label:'Network', |
| type:'select', |
| validators:{ required: false,}, |
| options:[ |
| { |
| id:0, |
| label:"Default" |
| }, |
| { |
| id:1, |
| label:"Host" |
| }, |
| { |
| id:2, |
| label:"Bridged" |
| }, |
| { |
| id:3, |
| label:"No Automatic Networks" |
| }, |
| ], |
| }, |
| |
| } |
| }; |
| |
| var data; |
| // retrieving user list |
| |
| |
| //Slices.get({id :$stateParams.id}).$promise |
| //.then((users) => { |
| // this.users = users; |
| // //console.log(users.name); |
| // data = users; |
| //}) |
| //.catch((e) => { |
| // throw new Error(e); |
| //}); |
| |
| //console.log(this.users); |
| //console.log(this.config.fields.site_select.options); |
| this.model = { |
| }; |
| } |
| }; |
| }) |
| .directive('editSlice', function(){ |
| return { |
| //sites : {}, |
| restrict: 'E', |
| scope: {}, |
| bindToController: true, |
| controllerAs: 'cs', |
| templateUrl: 'templates/createslice.html', |
| controller: function(Slices,SlicesPlus,$stateParams){ |
| //var sites; |
| //console.log(this.users.name); |
| |
| //console.log(this.config); |
| this.config = { |
| exclude: ['password', 'last_login'], |
| formName: 'SliceDetails', |
| actions: [ |
| { |
| label: 'Save', |
| icon: 'ok', // refers to bootstraps glyphicon |
| cb: (user) => { // receive the model |
| console.log(user); |
| }, |
| class: 'success' |
| },{ |
| label: 'Save and continue editing', |
| icon: 'ok', // refers to bootstraps glyphicon |
| cb: (user) => { // receive the model |
| console.log(user); |
| }, |
| class: 'primary' |
| },{ |
| label: 'Save and add another', |
| icon: 'ok', // refers to bootstraps glyphicon |
| cb: (user) => { // receive the model |
| console.log(user); |
| }, |
| class: 'primary' |
| } |
| ], |
| fields: |
| { |
| site_select : { |
| label:'Site', |
| type:'select', |
| validators:{ required: true,}, |
| hint : 'The Site this Slice belongs to', |
| options:[ |
| { |
| id:0, |
| label:"---Site---" |
| }, |
| { |
| id:1, |
| label:"---Site1---" |
| }], |
| |
| }, |
| first_name: { |
| label:'Name', |
| type: 'string', |
| hint: 'The Name of the Slice', |
| validators: { |
| required: true |
| } |
| }, |
| service_class : { |
| label:'ServiceClass', |
| type:'select', |
| validators:{ required: true,}, |
| hint : 'The Site this Slice belongs to', |
| options:[ |
| { |
| id:0, |
| label:"Best effort" |
| }, |
| ], |
| }, |
| enabled: { |
| label: 'Enabled', |
| type : 'boolean', |
| hint:'Status for this Slice' |
| }, |
| description: { |
| label: 'Description', |
| type : 'string', |
| hint:'High level description of the slice and expected activities', |
| validators: { |
| required: false, |
| minlength: 10 |
| } |
| }, |
| service : { |
| label:'Service', |
| type:'select', |
| validators:{ required: false,}, |
| options:[ |
| { |
| id:0, |
| label:"--------" |
| }, |
| ], |
| }, |
| slice_url: { |
| label: 'Slice url', |
| type : 'string', |
| validators: { |
| required: false, |
| minlength: 10 |
| } |
| }, |
| max_instances: { |
| type: 'Max Instances', |
| validators: { |
| required: false, |
| min: 0 |
| } |
| }, |
| default_isolation : { |
| label:'Default Isolation', |
| type:'select', |
| validators:{ required: false,}, |
| options:[ |
| { |
| id:0, |
| label:"Virtual Machine" |
| },{ |
| id:1, |
| label:"Container" |
| },{ |
| id:2, |
| label:"Container in VM" |
| }, |
| ], |
| }, |
| default_image : { |
| label:'Default image', |
| type:'select', |
| validators:{ required: false,}, |
| options:[ |
| { |
| id:0, |
| label:"trusty-server-multi-nic" |
| }, |
| ], |
| }, |
| network : { |
| label:'Network', |
| type:'select', |
| validators:{ required: false,}, |
| options:[ |
| { |
| id:0, |
| label:"Default" |
| }, |
| { |
| id:1, |
| label:"Host" |
| }, |
| { |
| id:2, |
| label:"Bridged" |
| }, |
| { |
| id:3, |
| label:"No Automatic Networks" |
| }, |
| ], |
| }, |
| |
| } |
| }; |
| |
| var data; |
| // retrieving user list |
| |
| |
| Slices.get({id :$stateParams.id}).$promise |
| .then((users) => { |
| this.users = users; |
| //console.log(users.name); |
| data = users; |
| }) |
| .catch((e) => { |
| throw new Error(e); |
| }); |
| |
| //console.log(this.users); |
| //console.log(this.config.fields.site_select.options); |
| this.model = { |
| first_name : "Teo" |
| }; |
| } |
| }; |
| }); |
| |
| |
| |