Major update to code structure

   * Split files into independent files based on functionality.
   * Switch to bower/gulp for build.

Change-Id: Ibc775dd9b7f6a0a49f63c22162b7582e781e2d9c
Signed-off-by: Iftekharul Islam <iislam@us.ibm.com>
diff --git a/app/overview/controllers/bmc-reboot-controller.html b/app/overview/controllers/bmc-reboot-controller.html
new file mode 100644
index 0000000..22df0c2
--- /dev/null
+++ b/app/overview/controllers/bmc-reboot-controller.html
@@ -0,0 +1,25 @@
+<div id="bmc-reboot">
+    <div class="row column">
+        <h1>Reboot BMC</h1>
+    </div>
+
+    <div class="row column  btm-border-grey">
+        <span class="bmc-reboot__status-log inline">BMC last reboot at {{dataService.last_updated |date:'h:mm:ss on MM/dd/yyyy'}}</span>
+    </div>
+
+    <div class="row column btm-border-grey bmc-reboot-option"
+         ng-class="{transitionAll: confirm && immediately_confirm}">
+        <ul>
+            <li>Rebooting the BMC causes your browser to lose contact with the BMC for several minutes.</li>
+            <li>When the BMC software has started, you can then log in again.</li>
+            <li>If the Log In button is not enabled after several minutes, you may need to point your browser to the
+                BMC’s address and log in again.
+            </li>
+        </ul>
+        <button id="bmc__reboot" class="btn-secondary" ng-click="bmcRebootConfirm()"><i>&#x21BB</i> Reboot BMC
+        </button>
+        <confirm title="Reboot the BMC"
+                 message="Rebooting the BMC causes your browser to lose contact with the BMC for several minutes."
+                 confirm="bmcReboot_confirm" cancel="bmcRebootCancel"></confirm>
+    </div>
+</div>
diff --git a/app/overview/controllers/bmc-reboot-controller.js b/app/overview/controllers/bmc-reboot-controller.js
new file mode 100644
index 0000000..040b444
--- /dev/null
+++ b/app/overview/controllers/bmc-reboot-controller.js
@@ -0,0 +1,26 @@
+/**
+ * Controller for bmc-reboot
+ *
+ * @module app/overview
+ * @exports bmcRebootController
+ * @name bmcRebootController
+ * @version 0.1.0
+ */
+
+window.angular && (function (angular) {
+    'use strict';
+
+    angular
+        .module('app.overview')
+        .controller('bmcRebootController', [
+            '$scope', 
+            '$window', 
+            'APIUtils', 
+            'dataService',
+            function($scope, $window, APIUtils, dataService, userModel){
+                $scope.dataService = dataService;
+            }
+        ]
+    );
+
+})(angular);
diff --git a/app/overview/controllers/log-controller.html b/app/overview/controllers/log-controller.html
new file mode 100644
index 0000000..cf70c95
--- /dev/null
+++ b/app/overview/controllers/log-controller.html
@@ -0,0 +1,3 @@
+<div id="uid-log">
+    Log contents here
+</div>
\ No newline at end of file
diff --git a/app/overview/controllers/log-controller.js b/app/overview/controllers/log-controller.js
new file mode 100644
index 0000000..3b85605
--- /dev/null
+++ b/app/overview/controllers/log-controller.js
@@ -0,0 +1,26 @@
+/**
+ * Controller for log
+ *
+ * @module app/overview
+ * @exports logController
+ * @name logController
+ * @version 0.1.0
+ */
+
+window.angular && (function (angular) {
+    'use strict';
+
+    angular
+        .module('app.overview')
+        .controller('logController', [
+            '$scope', 
+            '$window', 
+            'APIUtils', 
+            'dataService',
+            function($scope, $window, APIUtils, dataService, userModel){
+                $scope.dataService = dataService;
+            }
+        ]
+    );
+
+})(angular);
diff --git a/app/overview/controllers/power-operations-controller.html b/app/overview/controllers/power-operations-controller.html
new file mode 100644
index 0000000..48d4357
--- /dev/null
+++ b/app/overview/controllers/power-operations-controller.html
@@ -0,0 +1,55 @@
+<div id="power-operations">
+
+    <div class="row column">
+        <h1>Server power operation</h1>
+    </div>
+
+    <!-- Current status and bar display the state of the server. Class 'power__state-off' is applied to bar and 'power__state' text switches to say "off"-->
+    <div class="row column">
+        <div class="power__current-status ">
+            <h2 class="inline h4">Current status</h2>
+            <span class="power__status-log inline float-right">Server last reset at {{dataService.last_updated |date:'h:mm:ss on MM/dd/yyyy'}}</span>
+        </div>
+    </div>
+    <div class="row column">
+        <div id="power-indicator-bar" class="power__indicator-bar" ng-class="{'power__state-on': dataService.server_state == 'Running', 'power__state-off': dataService.server_state == 'Off', 'power__state-indet': dataService.server_state == 'Quiesced'}">
+            <p class="inline">{{dataService.server_id}}</p>
+            <h3 class="power__state inline float-right h3"><span>{{dataService.server_state}}</span></h3>
+        </div>
+    </div>
+    <div class="row column">
+        <div class="row column">
+            <h3 class="h4">Select a power operation</h3>
+        </div>
+
+        <!-- Power on displays only when server is shutdown -->
+        <div class="row column power-option" ng-hide="dataService.server_state == 'Running'" ng-class="{disabled: (confirm && !power_confirm) || dataService.loading, transitionAll: confirm && power_confirm}">
+            <button id="power__power-on" class="btn-secondary" ng-click="togglePower()" role="button">Power On</button>
+            <p>Attempts to power on the server</p>
+
+            <!---<confirm title="power off" message="Power off the server" confirm="power_confirm" ng-show="power_confirm" callback="togglePower"></confirm>-->
+        </div>
+
+        <!-- Power reboot/shutdown options : when server is off all of these are hidden. When one option is selected, the others are disabled. -->
+        <div class="row column power-option" ng-hide="dataService.server_state == 'Off'" ng-class="{disabled: (confirm && !warmboot_confirm) || dataService.loading, transitionAll: confirm && warmboot_confirm}">
+            <button id="power__warm-boot" class="btn-secondary" ng-click="warmRebootConfirm()" role="button"><i>&#x21BB</i> Warm reboot</button>
+            <p>Attempts to perform an orderly shutdown before restarting the server</p>
+            <confirm title="Warm Reboot" message="perform an orderly shutdown" confirm="warmboot_confirm" ng-show="warmboot_confirm" callback="warmReboot"></confirm>
+        </div>
+        <div class="row column power-option" ng-hide="dataService.server_state == 'Off'" ng-class="{disabled: (confirm && !coldboot_confirm) || dataService.loading, transitionAll: confirm && coldboot_confirm}">
+            <button id="power__cold-boot" class="btn-secondary" ng-click="coldRebootConfirm()" role="button"><i>&#x21BB</i> Cold reboot</button>
+            <p>Shuts down the server immediately, then restarts it</p>
+            <confirm title="Cold Reboot" message="Shutdown server immediately." confirm="coldboot_confirm" ng-show="coldboot_confirm" cancel="coldbootCancel" callback="coldReboot"></confirm>
+        </div>
+        <div class="row column power-option" ng-hide="dataService.server_state == 'Off'" ng-class="{disabled: (confirm && !orderly_confirm) || dataService.loading, transitionAll: confirm && orderly_confirm}">
+            <button id="power__soft-shutdown" class="btn-secondary" ng-click="orderlyShutdownConfirm()" role="button"><img src="assets/images/icon-power.svg" />Orderly shutdown</button>
+            <p>Attempts to stop all software on the server before removing power</p>
+            <confirm title="Orderly shutdown" message="Attempts to stop all software orderly." confirm="orderly_confirm" ng-show="orderly_confirm" cancel="orderlyShutdownCancel" callback="orderlyShutdown"></confirm>
+        </div>
+        <div class="row column power-option" ng-hide="dataService.server_state == 'Off'" ng-class="{disabled: (confirm && !immediately_confirm) || dataService.loading, transitionAll: confirm && immediately_confirm}">
+            <button id="power__hard-shutdown" class="btn-secondary" ng-click="immediateShutdownConfirm()" role="button"><img src="assets/images/icon-power.svg" />Immediate shutdown</button>
+            <p>Removes power from the server without waiting for software to stop</p>
+            <confirm title="Immediate shutdown" message="Removes power from the server immediately." confirm="immediately_confirm" ng-show="immediately_confirm" cancel="immediatelyShutdownCancel" callback="immediateShutdown"></confirm>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/app/overview/controllers/power-operations-controller.js b/app/overview/controllers/power-operations-controller.js
new file mode 100644
index 0000000..1780da3
--- /dev/null
+++ b/app/overview/controllers/power-operations-controller.js
@@ -0,0 +1,134 @@
+/**
+ * Controller for power-operations
+ *
+ * @module app/overview
+ * @exports powerOperationsController
+ * @name powerOperationsController
+ * @version 0.1.0
+ */
+
+window.angular && (function (angular) {
+    'use strict';
+
+    angular
+        .module('app.overview')
+        .controller('powerOperationsController', [
+            '$scope', 
+            'APIUtils', 
+            'dataService', 
+            '$timeout', 
+            function($scope, APIUtils, dataService, $timeout){
+                $scope.dataService = dataService;
+                $scope.confirm = false;
+                $scope.power_confirm = false;
+                $scope.warmboot_confirm = false;
+                $scope.coldboot_confirm = false;
+                $scope.orderly_confirm = false;
+                $scope.immediately_confirm = false;
+
+                //@TODO: call api and get proper state
+                $scope.toggleState = function(){
+                    dataService.server_state = (dataService.server_state == 'Running') ? 'Off': 'Running';
+                }
+
+                $scope.togglePower = function(){
+                    var method = (dataService.server_state == 'Running') ? 'hostPowerOff' : 'hostPowerOn';
+                     //@TODO: show progress or set class orange
+                    APIUtils[method](function(response){
+                        //update state based on response
+                        //error case?
+                        if(response == null){
+                            console.log("Failed request.");
+                        }else{
+                            //@TODO::need to get the server status
+                            if(dataService.server_state == 'Running'){
+                                dataService.setPowerOffState();
+                            }else{
+                                dataService.setPowerOnState();
+                            }
+                        }
+                    });
+                }
+                $scope.powerOnConfirm = function(){
+                    if($scope.confirm) {
+                        return;
+                    }
+                    $scope.confirm = true;
+                    $scope.power_confirm = true;
+                };
+                $scope.warmReboot = function(){
+                    //@TODO:show progress
+                    dataService.setBootingState();
+                    APIUtils.hostPowerOff(function(response){
+                        if(response){
+                            APIUtils.hostPowerOn(function(response){
+                                if(response){
+                                    dataService.setPowerOnState();
+                                }else{
+                                    //@TODO:show error message
+                                }
+                            });
+                        }else{
+                        }
+                    });
+                };
+                $scope.testState = function(){
+                    $timeout(function(){
+                        dataService.setPowerOffState();
+                        $timeout(function(){
+                            dataService.setPowerOnState();
+                        }, 2000);
+                    }, 1000);
+                };
+                $scope.warmRebootConfirm = function(){
+                    if($scope.confirm) {
+                        return;
+                    }
+                    $scope.confirm = true;
+                    $scope.warmboot_confirm = true;
+                };
+
+                $scope.coldReboot = function(){
+                    $scope.warmReboot();
+                };
+                $scope.coldRebootConfirm = function(){
+                    if($scope.confirm) {
+                        return;
+                    }
+                    $scope.confirm = true;
+                    $scope.coldboot_confirm = true;
+                };
+
+                $scope.orderlyShutdown = function(){
+                    //@TODO:show progress
+                    APIUtils.hostPowerOff(function(response){
+                        if(response){
+                            dataService.setPowerOffState();
+                        }else{
+                            //@TODO:hide progress & show error message
+                        }
+                    });
+                };
+                $scope.orderlyShutdownConfirm = function(){
+                    if($scope.confirm) {
+                        return;
+                    }
+                    $scope.confirm = true;
+                    $scope.orderly_confirm = true;
+                };
+
+                $scope.immediateShutdown = function(){
+                    $scope.orderlyShutdown();
+                };
+                $scope.immediateShutdownConfirm = function(){
+                    if($scope.confirm) {
+                        return;
+                    }
+                    $scope.confirm = true;
+                    $scope.immediately_confirm = true;
+                };
+            }
+        ]
+    );
+
+})(angular);
diff --git a/app/overview/controllers/system-overview-controller.html b/app/overview/controllers/system-overview-controller.html
new file mode 100644
index 0000000..9f6a126
--- /dev/null
+++ b/app/overview/controllers/system-overview-controller.html
@@ -0,0 +1,4 @@
+<div class="row column">
+    <h1>System Overview</h1>
+    <p>System overview will be here.</p>
+</div>
\ No newline at end of file
diff --git a/app/overview/controllers/system-overview-controller.js b/app/overview/controllers/system-overview-controller.js
new file mode 100644
index 0000000..e3841cb
--- /dev/null
+++ b/app/overview/controllers/system-overview-controller.js
@@ -0,0 +1,26 @@
+/**
+ * Controller for system overview
+ *
+ * @module app/overview
+ * @exports systemOverviewController
+ * @name systemOverviewController
+ * @version 0.1.0
+ */
+
+window.angular && (function (angular) {
+    'use strict';
+
+    angular
+        .module('app.overview')
+        .controller('systemOverviewController', [
+            '$scope', 
+            '$window', 
+            'APIUtils', 
+            'dataService',
+            function($scope, $window, APIUtils, dataService, userModel){
+                $scope.dataService = dataService;
+            }
+        ]
+    );
+
+})(angular);
diff --git a/app/overview/controllers/unit-id-controller.html b/app/overview/controllers/unit-id-controller.html
new file mode 100644
index 0000000..6e6ba72
--- /dev/null
+++ b/app/overview/controllers/unit-id-controller.html
@@ -0,0 +1,27 @@
+<div id="uid-switch">
+    <div class="row column">
+        <h1>Unit ID Indicator</h1>
+    </div>
+
+    <div class="row column">
+        <h2 class="h4">Unit ID control</h2>
+    </div>
+
+    <div class="row column">
+        <div class="btm-border-grey">
+            <div class="toggle inline" ng-init="indicatorState = 'off'">
+                <input id="toggle__switch-round"
+                       class="toggle-switch toggle-switch__round-flat"
+                       type="checkbox"
+                       tabindex="0"
+                       ng-click="indicatorState = { 'on': 'off', 'off':'on'}[indicatorState]"
+                       >
+                <label for="toggle__switch-round" tabindex="0">Unit ID indicator is <span class="uid-switch__status">{{indicatorState}}</span></label>
+            </div>
+            <div class="uid-switch__label inline">
+                <p>Unit ID indicator is <span class="uid-switch__status">{{indicatorState}}</span></p>
+                <p>Control unit indicator to identify server unit.</p>
+            </div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/app/overview/controllers/unit-id-controller.js b/app/overview/controllers/unit-id-controller.js
new file mode 100644
index 0000000..c59f411
--- /dev/null
+++ b/app/overview/controllers/unit-id-controller.js
@@ -0,0 +1,26 @@
+/**
+ * Controller for unit Id
+ *
+ * @module app/overview
+ * @exports unitIdController
+ * @name unitIdController
+ * @version 0.1.0
+ */
+
+window.angular && (function (angular) {
+    'use strict';
+
+    angular
+        .module('app.overview')
+        .controller('unitIdController', [
+            '$scope', 
+            '$window', 
+            'APIUtils', 
+            'dataService',
+            function($scope, $window, APIUtils, dataService, userModel){
+                $scope.dataService = dataService;
+            }
+        ]
+    );
+
+})(angular);
diff --git a/app/overview/index.js b/app/overview/index.js
new file mode 100644
index 0000000..bc37a37
--- /dev/null
+++ b/app/overview/index.js
@@ -0,0 +1,48 @@
+/**
+ * A module for the overview
+ *
+ * @module app/overview/index
+ * @exports app/overview/index
+ * @version 0.0.1
+ */
+
+window.angular && (function (angular) {
+    'use strict';
+
+    angular
+        .module('app.overview', [
+            'ngRoute',
+            'app.constants',
+            'app.common.services'
+        ])
+        // Route configuration
+        .config(['$routeProvider', function ($routeProvider) {
+            $routeProvider
+                .when('/overview/bmc-reboot', {
+                    'templateUrl': 'overview/controllers/bmc-reboot-controller.html',
+                    'controller': 'bmcRebootController',
+                    authenticated: true
+                })
+                .when('/overview/log', {
+                    'templateUrl': 'overview/controllers/log-controller.html',
+                    'controller': 'logController',
+                    authenticated: true
+                })
+                .when('/overview/power-operations', {
+                    'templateUrl': 'overview/controllers/power-operations-controller.html',
+                    'controller': 'powerOperationsController',
+                    authenticated: true
+                })
+                .when('/overview/unit-id', {
+                    'templateUrl': 'overview/controllers/unit-id-controller.html',
+                    'controller': 'unitIdController',
+                    authenticated: true
+                })
+                .when('/overview/system', {
+                    'templateUrl': 'overview/controllers/system-overview-controller.html',
+                    'controller': 'systemOverviewController',
+                    authenticated: true
+                });
+        }]);
+
+})(window.angular);
diff --git a/app/overview/styles/bmc-reboot.scss b/app/overview/styles/bmc-reboot.scss
new file mode 100644
index 0000000..23d1167
--- /dev/null
+++ b/app/overview/styles/bmc-reboot.scss
@@ -0,0 +1,27 @@
+// BMC Reboot
+
+#bmc-reboot {
+  ul {
+    margin: 0;
+    padding: 0;
+    margin-left: 1.3em;
+  }
+  .bmc-reboot__status-log {
+    color: $darkgrey;
+    font-weight: 500;
+    margin-top: 1em;
+    padding-bottom: .7em;
+  }
+
+  .bmc-reboot-option {
+    position: relative;
+    overflow: hidden;
+    padding-top: 1.5em;
+    padding-left: 1.8em;
+    button {
+      margin-bottom: 1.5em;
+      margin-top: 1.5em;
+    }
+  }
+
+}
diff --git a/app/overview/styles/index.scss b/app/overview/styles/index.scss
new file mode 100644
index 0000000..43fca4b
--- /dev/null
+++ b/app/overview/styles/index.scss
@@ -0,0 +1,5 @@
+@import "./bmc-reboot.scss";
+@import "./log.scss";
+@import "./power-operations.scss";
+@import "./system-overview.scss";
+@import "./unit-id.scss";
\ No newline at end of file
diff --git a/app/overview/styles/log.scss b/app/overview/styles/log.scss
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app/overview/styles/log.scss
diff --git a/app/overview/styles/power-operations.scss b/app/overview/styles/power-operations.scss
new file mode 100644
index 0000000..1a517be
--- /dev/null
+++ b/app/overview/styles/power-operations.scss
@@ -0,0 +1,102 @@
+// Power Operations SCSS
+
+#power-operations {
+
+  .h4 {
+    font-weight: bold;
+  }
+
+  // Power op time stamp
+  .power__status-log {
+    color: $darkgrey;
+    font-weight:500;
+  }
+
+  // Power Curernt status wrapper
+  .power__current-status {
+    border-bottom: 1px solid $lightbg__grey;
+    margin: 2.625em 0 1.2em 0;
+    .h4 {
+      padding: 0;
+      margin: 0 0 .5em 0;
+    }
+  }
+
+  // Power state indicator on/off
+  .power__state {
+    font-weight: 700;
+    margin-top: -.3em;
+    span:before {
+      content: '\25CF';
+      display: inline-block;
+      font-size: 1.8em;
+      color: $darkgrey;
+      margin-right: .1em;
+      vertical-align: middle;
+      transform: translateY(-4px);
+      @include slowTransition-all;
+    }
+  }
+
+  // Power bar indicator
+  .power__indicator-bar {
+    font-weight: bold;
+    padding: 1.4em 3em 0;
+    margin-bottom: 3.750em;
+    background-size: 200% 100%;
+    background-image: linear-gradient(to right, $status-ok-light 50%, $lightgrey 50%);
+    background-position: 100%;
+    transition: background-position 2s ease;
+    overflow: hidden;
+    p {
+      padding: 0;
+      margin: 0;
+    }
+    &.power__state-on {
+      background-position: -200%;
+      .power__state {
+        span:before {
+          color: $status-ok;
+        }
+      }
+    }
+    &.power__state-off {
+      background-position: -100%;
+      color: $darkgrey;
+      .power__state {
+        span:before {
+          color: $darkgrey;
+        }
+      }
+    }
+    &.power__state-indet {
+      color: $darkgrey;
+      @include indeterminate-bar;
+      .power__state {
+        span:before {
+          color: $status-warn;
+        }
+      }
+    }
+  }
+
+  // Power button options
+  .power-option {
+    border-top: 1px solid $lightgrey;
+    padding: 1.8em 0 1em 0;
+    position: relative;
+    overflow: hidden;
+    min-height: 1px;
+    min-width: 100%;
+    .btn-secondary {
+      margin-bottom: .5em;
+      @include mediaQuery(small) {
+        min-width: 300px;
+      }
+    }
+    @include mediaQuery(small){
+      padding: 1.8em 0 1em 1.8em;
+    }
+  }
+
+} //end power-operations
\ No newline at end of file
diff --git a/app/overview/styles/system-overview.scss b/app/overview/styles/system-overview.scss
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app/overview/styles/system-overview.scss
diff --git a/app/overview/styles/unit-id.scss b/app/overview/styles/unit-id.scss
new file mode 100644
index 0000000..cd7a9fe
--- /dev/null
+++ b/app/overview/styles/unit-id.scss
@@ -0,0 +1,19 @@
+// UI Light
+
+#uid-switch {
+  .switch {margin-left: 1.7em;}
+  .uid-switch__label {
+    padding-bottom: 1.5em;
+  }
+  .uid-switch__label p {
+    margin: 0;
+    &:first-child {font-weight: 700;}
+  }
+  .h4 {
+    border-bottom: 1px solid $lightbg__grey;
+    margin: 2.625em 0 1.2em 0;
+    padding: 0 0 .85em;
+    font-weight: 700;
+  }
+
+}
\ No newline at end of file