diff options
Diffstat (limited to 'client')
| -rw-r--r-- | client/index.html | 6 | ||||
| -rw-r--r-- | client/js/app.js | 3 | ||||
| -rw-r--r-- | client/js/controllers/home/main.js | 13 | ||||
| -rw-r--r-- | client/js/controllers/login.js | 16 | ||||
| -rw-r--r-- | client/js/controllers/status.js | 14 | ||||
| -rw-r--r-- | client/js/services/Compute.js | 40 | ||||
| -rw-r--r-- | client/js/services/Identity.js | 45 | ||||
| -rw-r--r-- | client/js/services/Image.js | 21 | ||||
| -rw-r--r-- | client/partials/login.html | 2 | ||||
| -rw-r--r-- | client/partials/nav.html | 3 | ||||
| -rw-r--r-- | client/vendors/angularjs/angular-cookies.min.js | 9 |
11 files changed, 141 insertions, 31 deletions
diff --git a/client/index.html b/client/index.html index ab5f00f..ba183df 100644 --- a/client/index.html +++ b/client/index.html @@ -61,7 +61,7 @@ <!-- Include JQuery --> <script src="./vendors/jquery/jquery-2.2.0.min.js"></script> - + <!-- Include Bootstrap --> <script src="./vendors/bootstrap/js/bootstrap.min.js"></script> @@ -69,12 +69,14 @@ <script src="./vendors/angularjs/angular.min.js"></script> <script src="./vendors/angularjs/angular-route.min.js"></script> <script src="./vendors/angularjs/angular-sanitize.min.js"></script> + <script src="./vendors/angularjs/angular-cookies.min.js"></script> <script src="./js/app.js"></script> <!-- Include services --> <script src="./js/services/Identity.js"></script> <script src="./js/services/Image.js"></script> - + <script src="./js/services/Compute.js"></script> + <!-- Include controller --> <script src="./js/controllers/login.js"></script> <script src="./js/controllers/status.js"></script> diff --git a/client/js/app.js b/client/js/app.js index 90fae89..e2d5b9b 100644 --- a/client/js/app.js +++ b/client/js/app.js @@ -3,7 +3,7 @@ * The main app module instance * @type angular.module.angular-1_3_6_L1749.moduleInstance */ -var mainApp=angular.module("mainApp",['ngRoute', 'ngSanitize']); +var mainApp=angular.module("mainApp",['ngRoute', 'ngSanitize', 'ngCookies']); /** * Configure routeProvider @@ -29,6 +29,5 @@ mainApp.config(['$routeProvider', function($routeProvider){ */ 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 e629779..d25bfad 100644 --- a/client/js/controllers/home/main.js +++ b/client/js/controllers/home/main.js @@ -3,8 +3,15 @@ * * @param {$scope} $scope The $scope service from angular */ -mainApp.controller('homeCtrl', function ($scope) +mainApp.controller('homeCtrl', [ '$scope', 'Compute', function ($scope, Compute) { - + + + var updatePage=function(){ + // TODO Update graph etc... + } + + // 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 6358a6d..829fc1d 100644 --- a/client/js/controllers/login.js +++ b/client/js/controllers/login.js @@ -9,14 +9,20 @@ */ mainApp.controller('loginCtrl', ['$scope','$sce','Identity', function ($scope,$sce, Identity) { - // Define default states - $('#loginModal').modal({backdrop: 'static', keyboard: false}); + // 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(); @@ -49,6 +55,6 @@ mainApp.controller('loginCtrl', ['$scope','$sce','Identity', function ($scope,$s // Try to login Identity.login(username, password, projectname, responseCallback); - }); + }; }]); diff --git a/client/js/controllers/status.js b/client/js/controllers/status.js index 2930e34..e01df34 100644 --- a/client/js/controllers/status.js +++ b/client/js/controllers/status.js @@ -6,9 +6,17 @@ * @param {$scope} $scope The $scope service from angular * @param {Identity} The Identity service */ -mainApp.controller('statusCtrl', ['$scope','Identity', function ($scope, Identity) +mainApp.controller('statusCtrl', ['$scope','Identity', '$rootScope', function ($scope, Identity, $rootScope) { + + // Give profile to model $scope.profile=Identity.profile; - - + + // Function to logout + $scope.logout=function(){ + Identity.logout(); + $rootScope.$broadcast('logoutEvent'); + + }; + }]); 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 index 4c8919c..8ee664c 100644 --- a/client/js/services/Identity.js +++ b/client/js/services/Identity.js @@ -1,5 +1,5 @@ -mainApp.factory('Identity',[ '$http', function($http){ +mainApp.factory('Identity',[ '$http', '$cookies', function($http, $cookies){ /* Create profile structure to store informations * about current session @@ -11,12 +11,44 @@ mainApp.factory('Identity',[ '$http', function($http){ /** + * 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; @@ -24,7 +56,8 @@ mainApp.factory('Identity',[ '$http', function($http){ if (typeof response.data.token !== 'undefined') { requestParserResult.status=0; - profile.token=response.data.token; + profile.token=response.data.token; + saveCookieForSession(); } else if(failedToSendRequest){ requestParserResult.failReason="Failed to send request"; @@ -48,7 +81,7 @@ mainApp.factory('Identity',[ '$http', function($http){ * @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; @@ -64,10 +97,14 @@ mainApp.factory('Identity',[ '$http', function($http){ }); }; + + // Return services objects return { login: login, - profile: profile + profile: profile, + isAlreadyLogin: isAlreadyLogin, + logout:logout }; diff --git a/client/js/services/Image.js b/client/js/services/Image.js index 4cb3590..23b33a8 100644 --- a/client/js/services/Image.js +++ b/client/js/services/Image.js @@ -1,24 +1,27 @@ mainApp.factory('Image',[ '$http', 'Identity', function($http, Identity){ - var httpResponse; - var uploadImage=function(image){ + + var parseUploadImageAnswer=function(response, failedToSendRequest){ }; - var parseUploadImageRequest=function(){ + + var getImages=function(callback){ + + var result=$http.post('../server/index.php', + $.param({"token" : Identity.profile.token, "task" : "Image"})); + + }; - var getResponse=function(){ - return parseUploadImageRequest(httpResponse); - }; - + + // Return services objects return { - uploadImage: uploadImage, - getResponse: getResponse + uploadImage: uploadImage }; diff --git a/client/partials/login.html b/client/partials/login.html index cd7d9ec..7519a83 100644 --- a/client/partials/login.html +++ b/client/partials/login.html @@ -34,7 +34,7 @@ <!--<a href="#" data-dismiss="modal" class="btn btn-default">Close</a>--> <button class="btn btn-lg btn-warning btn-block" id="loadingLoginButton"><span class="glyphicon glyphicon-refresh glyphicon-refresh-animate"></span> Loading...</button> <div class="alert alert-danger text-center" role="alert" id="failedToLoginAlert"><b>Failed to login</b></b><br />{{ failReason }}</div> - <a href="#" class="btn btn-lg btn-primary btn-block" id="loginButton" ng-click="processForm()">Login</a> + <a href="#" class="btn btn-lg btn-primary btn-block" id="loginButton" ng-click="loginAction()">Login</a> </div> </div> </div> diff --git a/client/partials/nav.html b/client/partials/nav.html index 7c34174..3c72844 100644 --- a/client/partials/nav.html +++ b/client/partials/nav.html @@ -32,8 +32,7 @@ <li><a href="#">Informations</a></li> <li><a href="#">Settings</a></li> <li role="separator" class="divider"></li> - <li><a href="#myModal" data-toggle="modal">Logout</a> - </li> + <li><a href="#" ng-click="logout()">Logout</a></li> </ul> </li> </ul> diff --git a/client/vendors/angularjs/angular-cookies.min.js b/client/vendors/angularjs/angular-cookies.min.js new file mode 100644 index 0000000..d0f126a --- /dev/null +++ b/client/vendors/angularjs/angular-cookies.min.js @@ -0,0 +1,9 @@ +/* + AngularJS v1.5.0 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(p,c,n){'use strict';function l(b,a,g){var d=g.baseHref(),k=b[0];return function(b,e,f){var g,h;f=f||{};h=f.expires;g=c.isDefined(f.path)?f.path:d;c.isUndefined(e)&&(h="Thu, 01 Jan 1970 00:00:00 GMT",e="");c.isString(h)&&(h=new Date(h));e=encodeURIComponent(b)+"="+encodeURIComponent(e);e=e+(g?";path="+g:"")+(f.domain?";domain="+f.domain:"");e+=h?";expires="+h.toUTCString():"";e+=f.secure?";secure":"";f=e.length+1;4096<f&&a.warn("Cookie '"+b+"' possibly not set or overflowed because it was too large ("+ +f+" > 4096 bytes)!");k.cookie=e}}c.module("ngCookies",["ng"]).provider("$cookies",[function(){var b=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(a,g){return{get:function(d){return a()[d]},getObject:function(d){return(d=this.get(d))?c.fromJson(d):d},getAll:function(){return a()},put:function(d,a,m){g(d,a,m?c.extend({},b,m):b)},putObject:function(d,b,a){this.put(d,c.toJson(b),a)},remove:function(a,k){g(a,n,k?c.extend({},b,k):b)}}}]}]);c.module("ngCookies").factory("$cookieStore", +["$cookies",function(b){return{get:function(a){return b.getObject(a)},put:function(a,c){b.putObject(a,c)},remove:function(a){b.remove(a)}}}]);l.$inject=["$document","$log","$browser"];c.module("ngCookies").provider("$$cookieWriter",function(){this.$get=l})})(window,window.angular); +//# sourceMappingURL=angular-cookies.min.js.map |
