Changes to xos dumbComponent
diff --git a/views/ngXosViews/tenant/src/js/main.js b/views/ngXosViews/tenant/src/js/main.js
new file mode 100644
index 0000000..105e54e
--- /dev/null
+++ b/views/ngXosViews/tenant/src/js/main.js
@@ -0,0 +1,547 @@
+'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"
+ };
+ }
+ };
+});
+
+
+