X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=portal%2Fstatic%2Fjs%2Fmyslice.js;h=548d5dabe89b34cc1fc2a401c0be0d5b7ed3a106;hb=111d0fcb9681bf94ff184fe43bf636b6d672cbff;hp=0807d4950ac5cb0fa0722d79b854258040eeb27e;hpb=9cbecc70e8916a0574e32088a15617c33c03bf9d;p=unfold.git diff --git a/portal/static/js/myslice.js b/portal/static/js/myslice.js index 0807d495..548d5dab 100644 --- a/portal/static/js/myslice.js +++ b/portal/static/js/myslice.js @@ -1,6 +1,10 @@ /* * MySlice Class */ +function isFunction(functionToCheck) { + var getType = {}; + return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; +} function list() { this.elements = []; @@ -106,18 +110,108 @@ var myslice = { user: function() { if ($.isEmptyObject(this.user)) { //this.login(function() { return this.user; }); - this.user = localStorage.getItem('user'); + if(localStorage.getItem('user')!='undefined'){ + this.user = JSON.parse(localStorage.getItem('user')); + }else{ + return false; + } } return this.user; }, + projects: {}, + + projects: function() { + if ($.isEmptyObject(this.projects)) { + //this.login(function() { return this.user; }); + if(localStorage.getItem('projects')!='undefined'){ + this.projects = JSON.parse(localStorage.getItem('projects')); + }else{ + return false; + } + } + return this.projects; + }, + + loadSlices: function(slices) { + if (typeof(slices) == "undefined"){ + if(myslice.user != null && typeof(myslice.user.slices) != "undefined" && myslice.user.slices.length>0){ + slices = myslice.user.slices + } + } + // myslice.user is in LocalStorage + if(typeof(slices) != "undefined"){ + /* + This allows progressive loading per AM platform + Launch queries to get the resources and leases in Manifold Cache + XXX platform:object + TODO support cache for prefixed objects + XXX Disabled until it's supported on Manifold side + */ + /* + $.post("/rest/platform/", function( data ) { + $.each(data, function(index, p) { + $.post("/rest/"+p.platform+":resource/", function( data ) { + }); + $.post("/rest/"+p.platform+":lease/", function( data ) { + }); + $.each( slices, function(i, val) { + // Launch a Query for each slice to get it in Manifold Cache + $.post("/rest/"+p.platform+":slice/", { 'filters': { 'slice_hrn' : val } }, function(data) { + }); + }); + + }); + }); + */ + } + + }, login: function(fn) { - $.post("/rest/user/",{'filters':{'user_hrn':'$user_hrn'}}, function( data ) { - myslice.user = new user(data[0]); - localStorage.setItem('user', JSON.stringify(myslice.user)); - }); + user = localStorage.getItem('user'); + if($.isEmptyObject(user)){ + // REGISTRY ONLY TO BE REMOVED WITH MANIFOLD-V2 + $.post("/rest/myslice:user/",{'filters':{'user_hrn':'$user_hrn'}}, function( data ) { + if (data.length > 0) { + localStorage.setItem('user', JSON.stringify(data[0])); + projects = []; + $.each(data[0].pi_authorities, function(idx, auth) { + // PI on projects + if(auth.split('.').length>2){ + if($.inArray(auth,projects) == -1){ + projects.push(auth); + } + }else if (auth.split('.').length>1){ + // PI on authorities + // What are the projects under this authority? + $.post("/rest/myslice:authority/",{'fields':['authority_hrn'],'filters':{'authority_hrn':'CONTAINS'+auth}}, function( data ) { + $.each(data, function(idx, project) { + console.log(project.authority_hrn); + if($.inArray(project.authority_hrn,projects) == -1){ + projects.push(project.authority_hrn); + } + }); + }); + }else{ + console.log("admin account - we don't list all from root"); + } + }); + localStorage.setItem('projects', JSON.stringify(projects)); + myslice.loadSlices(data[0].slices); + if(isFunction(fn)){ + fn(); + } + } + }); + }else{ + if(isFunction(fn)){ + fn(); + } + } + }, + getSlices: function(name) { },