summaryrefslogtreecommitdiff
path: root/client/js
diff options
context:
space:
mode:
authorroot <root@kabir-PC>2016-02-23 20:34:59 +0100
committerroot <root@kabir-PC>2016-02-23 20:34:59 +0100
commitd2f5ae5c83ef5bc41cf430ace79769459b4acbf8 (patch)
treeb48882db52687bdd64a398c7d1844d05dbc01343 /client/js
parent1eff9ee90bf26127463cae0ae2cb2e1951527591 (diff)
parentff1832adcfe10fadb6cbf738c874611f77f6dd43 (diff)
Merge branch 'develop' of https://github.com/manzerbredes/istic-openstack into othmane
Diffstat (limited to 'client/js')
-rw-r--r--client/js/app.js23
-rw-r--r--client/js/controllers/home/main.js18
-rw-r--r--client/js/controllers/login.js75
-rw-r--r--client/js/controllers/network/main.js9
-rw-r--r--client/js/controllers/status.js38
-rw-r--r--client/js/requests/identity.js42
-rw-r--r--client/js/services/Compute.js40
-rw-r--r--client/js/services/Identity.js111
-rw-r--r--client/js/services/Image.js28
9 files changed, 278 insertions, 106 deletions
diff --git a/client/js/app.js b/client/js/app.js
index 0e9c423..e2d5b9b 100644
--- a/client/js/app.js
+++ b/client/js/app.js
@@ -1,9 +1,16 @@
-// Declare main app
-var mainApp=angular.module("mainApp",['ngRoute', 'ngSanitize']);
-
+/**
+ * The main app module instance
+ * @type angular.module.angular-1_3_6_L1749.moduleInstance
+ */
+var mainApp=angular.module("mainApp",['ngRoute', 'ngSanitize', 'ngCookies']);
+/**
+ * Configure routeProvider
+ */
mainApp.config(['$routeProvider', function($routeProvider){
+
+
$routeProvider.
when('/home',{
templateUrl: 'partials/home/main.html',
@@ -15,4 +22,12 @@ mainApp.config(['$routeProvider', function($routeProvider){
}).otherwise({
redirectTo: '/home'
});
-}]); \ No newline at end of file
+}]);
+
+/**
+ * Configure httpProvider
+ */
+mainApp.config(['$httpProvider', function($httpProvider){
+ $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
+}]);
+
diff --git a/client/js/controllers/home/main.js b/client/js/controllers/home/main.js
index 2898de2..d25bfad 100644
--- a/client/js/controllers/home/main.js
+++ b/client/js/controllers/home/main.js
@@ -1,11 +1,17 @@
-/*
- * home Controller
+/**
+ * The home controller
+ *
+ * @param {$scope} $scope The $scope service from angular
*/
+mainApp.controller('homeCtrl', [ '$scope', 'Compute', function ($scope, Compute)
+{
+ var updatePage=function(){
+ // TODO Update graph etc...
+ }
-mainApp.controller('homeCtrl', function ($scope)
-{
-
+ // Retrieve all Data
+ Compute.pullData(updatePage);
-}); \ No newline at end of file
+}]);
diff --git a/client/js/controllers/login.js b/client/js/controllers/login.js
index 2f74414..829fc1d 100644
--- a/client/js/controllers/login.js
+++ b/client/js/controllers/login.js
@@ -1,39 +1,60 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
/**
- * Represents a book.
- * @constructor
+ * The login controler
+ * @param {$scope} $scope The $scope angular service
+ * @param {$sce} $sce The $sce angular service
+ * @param {$http} $http The $http angular service
+ * @param {Identity} The Identity service
+
*/
-mainApp.controller('loginCtrl', function ($scope,$interval,$sce)
+mainApp.controller('loginCtrl', ['$scope','$sce','Identity', function ($scope,$sce, Identity)
{
- // Define default states
- $('#loginModal').modal({backdrop: 'static', keyboard: false});
- $('#loadingLoginButton').hide();
- $('#failedToLoginAlert').hide();
-
+ // Check for login and define default states
+ if(!Identity.isAlreadyLogin()){
+ $('#loginModal').modal({backdrop: 'static', keyboard: false});
+ }
+ $scope.$on('logoutEvent', function(){
+ $('#loginModal').modal({backdrop: 'static', keyboard: false});
+ });
+
+ $('#loadingLoginButton').hide();
+ $('#failedToLoginAlert').hide();
+
- $('#loginButton').click(function(){
+ $scope.loginAction=function(){
+
+ // Begin login state for template
$('#loginButton').hide();
$('#loadingLoginButton').show();
$('#failedToLoginAlert').hide();
-
+ // Get data from templates
+ var username=$("#loginFormUsername").val();
+ var password=$("#loginFormPassword").val();
+ var projectname=$("#loginFormProjectname").val();
+
+ // Function to call to handle result
+ var responseCallback=function(response){
+
+ if(response.status!==0){
+ // Set reason of fail
+ $scope.failReason=response.failReason;
- $interval(
- function()
- {
- $('#failedToLoginAlert').show();
+ // Display the error
+ $('#failedToLoginAlert').show();
+ }
+ else {
+ // Else the user is online !
+ $('#loginModal').modal('hide');
+ }
+ // Reset button state
$('#loginButton').show();
- $('#loadingLoginButton').hide();
-
- }, 2000,1);
-
-
-
- });
-})
+ $('#loadingLoginButton').hide();
+ }
+
+ // Try to login
+ Identity.login(username, password, projectname, responseCallback);
+ };
+
+}]);
diff --git a/client/js/controllers/network/main.js b/client/js/controllers/network/main.js
index 6c916ae..7264aec 100644
--- a/client/js/controllers/network/main.js
+++ b/client/js/controllers/network/main.js
@@ -1,9 +1,8 @@
-/*
- * network Controller
+/**
+ * The network controller
+ *
+ * @param {$scope} $scope The $scope service from angular
*/
-
-
-
mainApp.controller('networkCtrl', function ($scope)
{
}); \ No newline at end of file
diff --git a/client/js/controllers/status.js b/client/js/controllers/status.js
index 42a54d4..e01df34 100644
--- a/client/js/controllers/status.js
+++ b/client/js/controllers/status.js
@@ -1,28 +1,22 @@
-/*
- * mainApp Controller
- */
-
-mainApp.controller('statusCtrl', function ($scope,$interval,$sce)
+/**
+ * The status controller
+ *
+ * @param {$scope} $scope The $scope service from angular
+ * @param {Identity} The Identity service
+ */
+mainApp.controller('statusCtrl', ['$scope','Identity', '$rootScope', function ($scope, Identity, $rootScope)
{
- $scope.username="John Doe";
- $scope.projectname="Web Server";
- // Update status every 2 seconds
- /*$interval(function(){
- var status=identity.fetchStatus();
- $scope.username=status[1];
- $scope.lastconnection=status[2];
- if(status[0] == "1"){
- $scope.connection=$sce.trustAsHtml("<span style=\"color:green;\">Online</span>");
- }
- else{
- $scope.connection=$sce.trustAsHtml("<span style=\"color:red;\">Offline</span>");
- }
- }, 2000);*/
+ // Give profile to model
+ $scope.profile=Identity.profile;
+
+ // Function to logout
+ $scope.logout=function(){
+ Identity.logout();
+ $rootScope.$broadcast('logoutEvent');
+ };
-
-
-}); \ No newline at end of file
+}]);
diff --git a/client/js/requests/identity.js b/client/js/requests/identity.js
deleted file mode 100644
index cad1261..0000000
--- a/client/js/requests/identity.js
+++ /dev/null
@@ -1,42 +0,0 @@
-
-// Make Namespace
-var identity = {} ;
-
-
-
-
-
-
-/*
-mainApp.controller('identityCtrl', function($scope, $http) {
-
- $scope.identityFormData = {};
-
- $scope.processForm = function() {
-
- $http({
- method : 'POST',
- url : 'http://148.60.11.31/',
- data : $.param($scope.identityFormData),
- headers : { 'Content-Type': 'application/x-www-form-urlencoded' }
- })
- .success(function(data) {
- console.log(data);
-
- if (!data.success) {
- // if not successful, bind errors to error variables
- //$scope.errorName = data.errors.name;
- //$scope.errorSuperhero = data.errors.superheroAlias;
- } else {
- // if successful, bind success message to message
- //$scope.message = data.message;
- }
- });
- };
-
-
-
-});*/
-
-
-
diff --git a/client/js/services/Compute.js b/client/js/services/Compute.js
new file mode 100644
index 0000000..c5c8da9
--- /dev/null
+++ b/client/js/services/Compute.js
@@ -0,0 +1,40 @@
+
+mainApp.factory('Compute',[ '$http', 'Identity', function($http, Identity){
+
+
+
+ var data={};
+ data.machines={};
+
+
+ // Parser
+ var parseGetMachinesAnswer=function(response, failedToSendRequest){
+
+ };
+
+
+ // Get Machine
+ var getMachines=function(callback){
+
+ var result=$http.post('../server/index.php',
+ $.param({"token" : Identity.profile.token, "task" : "Compute"}));
+
+
+ };
+
+
+
+ var pullData=function(callback){
+ // TODO call getMachines etc...
+ }
+
+
+ // Return services objects
+ return {
+ getMachines: getMachines
+ pullData: pullData
+ data:data
+ };
+
+
+}]);
diff --git a/client/js/services/Identity.js b/client/js/services/Identity.js
new file mode 100644
index 0000000..8ee664c
--- /dev/null
+++ b/client/js/services/Identity.js
@@ -0,0 +1,111 @@
+
+mainApp.factory('Identity',[ '$http', '$cookies', function($http, $cookies){
+
+ /* Create profile structure to store informations
+ * about current session
+ */
+ var profile={};
+ profile.username=null;
+ profile.projectname=null;
+ profile.token=null;
+
+
+ /**
+ * Save profile in cookies
+ */
+ var saveCookieForSession=function(){
+ $cookies.putObject('profile', 5);
+ };
+
+
+ /*
+ * @returns {boolean} Return true if a cookie is found (and load it in profile) false else
+ */
+ var isAlreadyLogin=function(){
+ var profileInCookie=$cookies.getObject('profile');
+ console.log(profileInCookie);
+
+ if(typeof profileInCookie !== 'undefined'){
+ angular.extend(profile, profileInCookie);
+ return true;
+ }
+
+ return false;
+ }
+
+ /*
+ * Destroy profile cookies
+ */
+ var logout=function(){
+ $cookies.remove('profile');
+ }
+
+
+ /**
+ *
+ * @param {string} response The response to parse
+ * @param {boolean} to check if the request is send or not
+ * @returns {requestParserResult} Formated data
+ */
+ var parseLoginAnswer=function(response, failedToSendRequest){
+
+
+ var requestParserResult={};
+ requestParserResult.status=1;
+ requestParserResult.failReason=null;
+
+ if (typeof response.data.token !== 'undefined') {
+ requestParserResult.status=0;
+ profile.token=response.data.token;
+ saveCookieForSession();
+ }
+ else if(failedToSendRequest){
+ requestParserResult.failReason="Failed to send request";
+ }
+ else{
+ requestParserResult.failReason="Please check your username, password and project name !";
+ }
+
+ return requestParserResult;
+ };
+
+
+
+ /**
+ * Function to connect to OpenStack
+ *
+ * @param {object} $http Angular $http service
+ * @param {string} username The user name
+ * @param {string} password The user password
+ * @param {string} projectname The user project name
+ * @param {function} function to call when data is avalaible
+ */
+ var login=function(username, password,projectname, callback){
+
+ // Set profile information (early)
+ profile.username=username;
+ profile.projectname=projectname;
+
+ var result=$http.post('../server/index.php',
+ $.param({"task" : "Authenticate", "user" : username, "password" : password, "project" : projectname}));
+
+ // Wait and handle the response
+ result.then(function (response){
+ callback(parseLoginAnswer(response), false);
+ },function(response){
+ callback(parseLoginAnswer(response), true)
+ });
+ };
+
+
+
+ // Return services objects
+ return {
+ login: login,
+ profile: profile,
+ isAlreadyLogin: isAlreadyLogin,
+ logout:logout
+ };
+
+
+}]);
diff --git a/client/js/services/Image.js b/client/js/services/Image.js
new file mode 100644
index 0000000..23b33a8
--- /dev/null
+++ b/client/js/services/Image.js
@@ -0,0 +1,28 @@
+
+mainApp.factory('Image',[ '$http', 'Identity', function($http, Identity){
+
+
+
+ var parseUploadImageAnswer=function(response, failedToSendRequest){
+
+ };
+
+
+ var getImages=function(callback){
+
+ var result=$http.post('../server/index.php',
+ $.param({"token" : Identity.profile.token, "task" : "Image"}));
+
+
+
+ };
+
+
+
+ // Return services objects
+ return {
+ uploadImage: uploadImage
+ };
+
+
+}]);