/** * The home controller * * @param {$scope} $scope The $scope service from angular */ mainApp.controller('homeCtrl', ['$scope', 'Compute', '$rootScope', 'Loading', 'Identity', 'Image', function ($scope, Compute, $rootScope, Loading, Identity, Image) { // Function to call after pull all data about machines var callMeAfterPullData = function (data) { $scope.machines = Compute.getData().machines; Loading.stop(); }; // Function to call to try to retrieve data and update the view var tryToRetrieveData = function () { // If no data retrieve about machine and user is logged if (Compute.getData().machines == null && Identity.isAlreadyLogin()) { Loading.start(); // Show loading gif Compute.pullData(callMeAfterPullData); // Retrieve data and call the callback } else { // Else if user is logged and data is already retrieve // simply display data if (Identity.isAlreadyLogin()) { callMeAfterPullData(); // Display data } } }; // On user login $scope.$on('loginEvent', function () { tryToRetrieveData(); }); // Function to call from view to display the details of a machine $scope.raiseShowMachineDetailsEvent = function (id) { // Stop loading gif and display overlay var callback = function () { Loading.stop(); var data = Compute.getData(); $rootScope.$broadcast("showMachineDetailsEvent", data.machines[id], data.axioms); }; Loading.start(); // Show loading gif Compute.pullMachines(callback); // Retrieve machine info and display overlay }; // Try to retrieve data for the first time tryToRetrieveData(); }]);