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