1*cd789508SIftekharul Islam/** 2*cd789508SIftekharul Islam * Controller for power-operations 3*cd789508SIftekharul Islam * 4*cd789508SIftekharul Islam * @module app/serverControl 5*cd789508SIftekharul Islam * @exports powerOperationsController 6*cd789508SIftekharul Islam * @name powerOperationsController 7*cd789508SIftekharul Islam * @version 0.1.0 8*cd789508SIftekharul Islam */ 9*cd789508SIftekharul Islam 10*cd789508SIftekharul Islamwindow.angular && (function (angular) { 11*cd789508SIftekharul Islam 'use strict'; 12*cd789508SIftekharul Islam 13*cd789508SIftekharul Islam angular 14*cd789508SIftekharul Islam .module('app.serverControl') 15*cd789508SIftekharul Islam .controller('powerOperationsController', [ 16*cd789508SIftekharul Islam '$scope', 17*cd789508SIftekharul Islam 'APIUtils', 18*cd789508SIftekharul Islam 'dataService', 19*cd789508SIftekharul Islam '$timeout', 20*cd789508SIftekharul Islam function($scope, APIUtils, dataService, $timeout){ 21*cd789508SIftekharul Islam $scope.dataService = dataService; 22*cd789508SIftekharul Islam $scope.confirm = false; 23*cd789508SIftekharul Islam $scope.power_confirm = false; 24*cd789508SIftekharul Islam $scope.warmboot_confirm = false; 25*cd789508SIftekharul Islam $scope.coldboot_confirm = false; 26*cd789508SIftekharul Islam $scope.orderly_confirm = false; 27*cd789508SIftekharul Islam $scope.immediately_confirm = false; 28*cd789508SIftekharul Islam 29*cd789508SIftekharul Islam //@TODO: call api and get proper state 30*cd789508SIftekharul Islam $scope.toggleState = function(){ 31*cd789508SIftekharul Islam dataService.server_state = (dataService.server_state == 'Running') ? 'Off': 'Running'; 32*cd789508SIftekharul Islam } 33*cd789508SIftekharul Islam 34*cd789508SIftekharul Islam $scope.togglePower = function(){ 35*cd789508SIftekharul Islam var method = (dataService.server_state == 'Running') ? 'hostPowerOff' : 'hostPowerOn'; 36*cd789508SIftekharul Islam //@TODO: show progress or set class orange 37*cd789508SIftekharul Islam APIUtils[method](function(response){ 38*cd789508SIftekharul Islam //update state based on response 39*cd789508SIftekharul Islam //error case? 40*cd789508SIftekharul Islam if(response == null){ 41*cd789508SIftekharul Islam console.log("Failed request."); 42*cd789508SIftekharul Islam }else{ 43*cd789508SIftekharul Islam //@TODO::need to get the server status 44*cd789508SIftekharul Islam if(dataService.server_state == 'Running'){ 45*cd789508SIftekharul Islam dataService.setPowerOffState(); 46*cd789508SIftekharul Islam }else{ 47*cd789508SIftekharul Islam dataService.setPowerOnState(); 48*cd789508SIftekharul Islam } 49*cd789508SIftekharul Islam } 50*cd789508SIftekharul Islam }); 51*cd789508SIftekharul Islam } 52*cd789508SIftekharul Islam $scope.powerOnConfirm = function(){ 53*cd789508SIftekharul Islam if($scope.confirm) { 54*cd789508SIftekharul Islam return; 55*cd789508SIftekharul Islam } 56*cd789508SIftekharul Islam $scope.confirm = true; 57*cd789508SIftekharul Islam $scope.power_confirm = true; 58*cd789508SIftekharul Islam }; 59*cd789508SIftekharul Islam $scope.warmReboot = function(){ 60*cd789508SIftekharul Islam //@TODO:show progress 61*cd789508SIftekharul Islam dataService.setBootingState(); 62*cd789508SIftekharul Islam APIUtils.hostPowerOff(function(response){ 63*cd789508SIftekharul Islam if(response){ 64*cd789508SIftekharul Islam APIUtils.hostPowerOn(function(response){ 65*cd789508SIftekharul Islam if(response){ 66*cd789508SIftekharul Islam dataService.setPowerOnState(); 67*cd789508SIftekharul Islam }else{ 68*cd789508SIftekharul Islam //@TODO:show error message 69*cd789508SIftekharul Islam } 70*cd789508SIftekharul Islam }); 71*cd789508SIftekharul Islam }else{ 72*cd789508SIftekharul Islam } 73*cd789508SIftekharul Islam }); 74*cd789508SIftekharul Islam }; 75*cd789508SIftekharul Islam $scope.testState = function(){ 76*cd789508SIftekharul Islam $timeout(function(){ 77*cd789508SIftekharul Islam dataService.setPowerOffState(); 78*cd789508SIftekharul Islam $timeout(function(){ 79*cd789508SIftekharul Islam dataService.setPowerOnState(); 80*cd789508SIftekharul Islam }, 2000); 81*cd789508SIftekharul Islam }, 1000); 82*cd789508SIftekharul Islam }; 83*cd789508SIftekharul Islam $scope.warmRebootConfirm = function(){ 84*cd789508SIftekharul Islam if($scope.confirm) { 85*cd789508SIftekharul Islam return; 86*cd789508SIftekharul Islam } 87*cd789508SIftekharul Islam $scope.confirm = true; 88*cd789508SIftekharul Islam $scope.warmboot_confirm = true; 89*cd789508SIftekharul Islam }; 90*cd789508SIftekharul Islam 91*cd789508SIftekharul Islam $scope.coldReboot = function(){ 92*cd789508SIftekharul Islam $scope.warmReboot(); 93*cd789508SIftekharul Islam }; 94*cd789508SIftekharul Islam $scope.coldRebootConfirm = function(){ 95*cd789508SIftekharul Islam if($scope.confirm) { 96*cd789508SIftekharul Islam return; 97*cd789508SIftekharul Islam } 98*cd789508SIftekharul Islam $scope.confirm = true; 99*cd789508SIftekharul Islam $scope.coldboot_confirm = true; 100*cd789508SIftekharul Islam }; 101*cd789508SIftekharul Islam 102*cd789508SIftekharul Islam $scope.orderlyShutdown = function(){ 103*cd789508SIftekharul Islam //@TODO:show progress 104*cd789508SIftekharul Islam APIUtils.hostPowerOff(function(response){ 105*cd789508SIftekharul Islam if(response){ 106*cd789508SIftekharul Islam dataService.setPowerOffState(); 107*cd789508SIftekharul Islam }else{ 108*cd789508SIftekharul Islam //@TODO:hide progress & show error message 109*cd789508SIftekharul Islam } 110*cd789508SIftekharul Islam }); 111*cd789508SIftekharul Islam }; 112*cd789508SIftekharul Islam $scope.orderlyShutdownConfirm = function(){ 113*cd789508SIftekharul Islam if($scope.confirm) { 114*cd789508SIftekharul Islam return; 115*cd789508SIftekharul Islam } 116*cd789508SIftekharul Islam $scope.confirm = true; 117*cd789508SIftekharul Islam $scope.orderly_confirm = true; 118*cd789508SIftekharul Islam }; 119*cd789508SIftekharul Islam 120*cd789508SIftekharul Islam $scope.immediateShutdown = function(){ 121*cd789508SIftekharul Islam $scope.orderlyShutdown(); 122*cd789508SIftekharul Islam }; 123*cd789508SIftekharul Islam $scope.immediateShutdownConfirm = function(){ 124*cd789508SIftekharul Islam if($scope.confirm) { 125*cd789508SIftekharul Islam return; 126*cd789508SIftekharul Islam } 127*cd789508SIftekharul Islam $scope.confirm = true; 128*cd789508SIftekharul Islam $scope.immediately_confirm = true; 129*cd789508SIftekharul Islam }; 130*cd789508SIftekharul Islam } 131*cd789508SIftekharul Islam ] 132*cd789508SIftekharul Islam ); 133*cd789508SIftekharul Islam 134*cd789508SIftekharul Islam})(angular); 135