/* This file is part of Accountant. Accountant is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Foobar is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Accountant. If not, see . */ // Month object function month() { this.year = null; this.month = null; } var MonthController = function($scope, $http, $rootScope) { // Month store and selection $scope.months = null; $scope.month = null; $scope.account = null; $scope.monthClass = function(month) { if(month == $scope.month) { return "active"; } }; // Function to load months $scope.loadMonths = function(account) { if(account) { $scope.account = account; } if($scope.account) { $http.get("api/accounts/" + $scope.account.id + "/months").success($scope.loadMonths_success); } else { $scope.$emit("monthsLoadedEvent", {account: null, month: null}); } }; $scope.loadMonths_success = function (data) { // Update months $scope.months = angular.fromJson(data); var monthToSelect = null; var today = new Date(); var currentYear = today.getFullYear().toString(); var currentMonth = (today.getMonth() + 1 < 10 ? "0" : "") + (today.getMonth() + 1); // Find the new instance of the previously selected month. angular.forEach($scope.months, function(month) { // Reset selected month to the new instance corresponding to the old one if($scope.month) { if(month == $scope.month) { monthToSelect = month; } } else { if(month.year === currentYear && month.month === currentMonth) { monthToSelect = month; } } }); // Set selected month to the last one if not yet selected. if(!monthToSelect && $scope.months.length > 0) { monthToSelect = $scope.months[$scope.months.length - 1]; } // Reset to month to select $scope.month = monthToSelect; $scope.$emit("monthsLoadedEvent", {account: $scope.account, month: $scope.month}); }; // Callback function to select a new month. $scope.selectMonth = function(month) { if(month) { $scope.month = month; $scope.$emit("monthsLoadedEvent", {account: $scope.account, month: month}); } }; $rootScope.$on("accountsLoadedEvent", function(event, args) { $scope.loadMonths(args.account); }); };