blob: 105e54e233d3a93fb46739fe7d266a78711e7e88 [file] [log] [blame]
'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"
};
}
};
});