// import required libraries var UI = require('ui'); var ajax = require('ajax'); var Vector2 = require('vector2'); var Vibe = require('ui/vibe'); // setup authentication information var encodedLogin = "mybiglongencodedstring"; var expirationTimeInSeconds = 600; // timeout for app // main window var splashWindow = new UI.Window(); var text = new UI.Text({ position: new Vector2(0,0), size: new Vector2(144,168), text: 'Logging into Ravello Sytems, please wait...', color:'black', textOverflow:'wrap', textAlign:'center', backgroundColor:'white' }); // Add to splashWindow and show splashWindow.add(text); splashWindow.show(); //login to Ravello ajax({ url: 'https://cloud.ravellosystems.com/api/v1/login',method: 'post', headers: {Authorization: "Basic " + encodedlogin, Accept: "application/json"} }, function(data,status,obj) { // success into Ravello var contents = JSON.parse(data); var text2 = new UI.Text({ position: new Vector2(0,0), size: new Vector2(144,168), text: 'Hello ' + contents.name + ', you are now logged in! - Fetching applications, please wait...', color:'black', textOverflow:'wrap', textAlign:'center', backgroundColor:'white' }); splashWindow.add(text2); // get list of applications ajax({ url: 'https://cloud.ravellosystems.com/api/v1/applications',method: 'get', headers: {Accept: "application/json"} }, function(data,status,obj) { // success application list var apps = JSON.parse(data); var count = Object.keys(apps).length; var menuItems = []; var appname; var appid; for(var i = 0; i < count; i++) { appname = apps[i].name; appid = apps[i].id; menuItems.push({ title:appname, subtitle:appid }); } // Construct Application menu to show to user var resultsMenu = new UI.Menu({ sections: [{ title: 'My Applications', items: menuItems }] }); // Show the Menu, hide the splash resultsMenu.show(); splashWindow.hide(); // Add an action for SELECT resultsMenu.on('select', function(e) { console.log('Item number ' + e.itemIndex + ' was pressed!'); // this is where magic happens and we translate which item was pressed into turning on applications var detailCard = new UI.Card ( {title: "Starting Lab", subtitle: e.item.title } ); detailCard.show(); detailCard.body('Setting lab power off time to ' + expirationTimeInSeconds.toString() + ' seconds...'); var ExpURL = 'https://cloud.ravellosystems.com/api/v1/applications/'+e.item.subtitle+'/setExpiration'; console.log(ExpURL); // set expiration time for selected application var expbody = { "expirationFromNowSeconds": + expirationTimeInSeconds }; ajax ( { url: ExpURL,type: "json",method: "post",headers: { Accept: "application/json" }, data: expbody }, function(data,status,obj) { // success setting expiration time detailCard.body('Setting lab power off time to ' + expirationTimeInSeconds.toString() + ' seconds...'+ 'DONE!\nPowering on lab...'); var StartURL = 'https://cloud.ravellosystems.com/api/v1/applications/'+e.item.subtitle+'/start'; ajax ( { url: StartURL,type: "json",method:"post",headers: {Accept: "application/json"} }, function(data,status,obj) { // success starting application console.log("Success on start:" + status); detailCard.body('Setting lab power off time to ' + expirationTimeInSeconds.toString() + ' seconds...'+ 'DONE!\nPowering on lab...' + 'DONE!\nLab Powered On' ); Vibe.vibrate('short'); }, function(data,status,obj) { // failure starting application console.log("Error on start:" + status); } ); // end expiration time ajax call }, function(data,status,obj) { // failure setting expiration console.log("error: " + status); } ); // end set apptime ajax call }); // end menu actions } // end success app list ); // end app list ajax call } // end success login ); // end login ajax call