155 lines
4.1 KiB
JavaScript
155 lines
4.1 KiB
JavaScript
|
// Account object
|
||
|
function account() {
|
||
|
this.id=ko.observable();
|
||
|
this.name=ko.observable();
|
||
|
this.authorized_overdraft=ko.observable();
|
||
|
this.future=ko.observable();
|
||
|
this.current=ko.observable();
|
||
|
this.pointed=ko.observable();
|
||
|
};
|
||
|
|
||
|
// The AccountController.
|
||
|
var AccountController = function($scope, $http, $rootScope) {
|
||
|
// Account store and selection
|
||
|
$scope.account = null;
|
||
|
$scope.accounts = [];
|
||
|
|
||
|
$scope.savedAccount = null;
|
||
|
$scope.editingAccount = null;
|
||
|
$scope.removedAccount = null;
|
||
|
|
||
|
$scope.accountClass = function(account) {
|
||
|
if(account == $scope.account) {
|
||
|
return "active";
|
||
|
}
|
||
|
};
|
||
|
|
||
|
$scope.valueClass = function(account, value) {
|
||
|
if(value < account.authorized_overdraft) {
|
||
|
return "text-error";
|
||
|
} else if(value < 0) {
|
||
|
return "text-warning";
|
||
|
}
|
||
|
};
|
||
|
|
||
|
$scope.addAccount = function() {
|
||
|
$scope.editingAccount = {
|
||
|
id: null,
|
||
|
name: null,
|
||
|
authorized_overdraft: null
|
||
|
};
|
||
|
|
||
|
angular.element("#edit-account").modal();
|
||
|
};
|
||
|
|
||
|
$scope.show = function() {
|
||
|
console.debug("show");
|
||
|
};
|
||
|
|
||
|
$scope.editAccount = function(account) {
|
||
|
if(account) {
|
||
|
$scope.editingAccount = account;
|
||
|
$scope.savedAccount = angular.copy(account);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
$scope.cancelEditAccount = function(account, modalScope) {
|
||
|
if($scope.savedAccount) {
|
||
|
account.name = $scope.savedAccount.name;
|
||
|
account.authorized_overdraft = $scope.savedAccount.authorized_overdraft;
|
||
|
}
|
||
|
|
||
|
$scope.editingAccount = null;
|
||
|
$scope.savedAccount = null;
|
||
|
|
||
|
if(modalScope && modalScope.dismiss) {
|
||
|
modalScope.dismiss();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
$scope.saveAccount = function(account, modalScope) {
|
||
|
// Ajax call to save the entry.
|
||
|
var type;
|
||
|
var url = "api/accounts";
|
||
|
|
||
|
if(account.id) {
|
||
|
url += "/" + account.id;
|
||
|
}
|
||
|
|
||
|
$http.put(url, angular.toJson(account)).success(function(data) {
|
||
|
message("success", "Save", data);
|
||
|
|
||
|
$scope.editingAccount = null;
|
||
|
$scope.savedAccount = null;
|
||
|
|
||
|
if(modalScope && modalScope.dismiss) {
|
||
|
modalScope.dismiss();
|
||
|
}
|
||
|
|
||
|
// Reload accounts to update solds.
|
||
|
$scope.loadAccounts();
|
||
|
});
|
||
|
};
|
||
|
|
||
|
// Function to remove of an entry.
|
||
|
$scope.accountRemove = function(account, modalScope) {
|
||
|
$http.delete("api/accounts/" + account.id).success(function (data) {
|
||
|
message("success", "Save", data);
|
||
|
|
||
|
// Reload accounts to update solds.
|
||
|
$scope.loadAccounts();
|
||
|
|
||
|
if(modalScope && modalScope.dismiss) {
|
||
|
modalScope.dismiss();
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
// Function to load accounts
|
||
|
$scope.loadAccounts = function() {
|
||
|
$http.get("api/accounts").success($scope.loadAccounts_success);
|
||
|
};
|
||
|
|
||
|
$scope.loadAccounts_success = function (data) {
|
||
|
// Update accounts
|
||
|
$scope.accounts = angular.fromJson(data);
|
||
|
|
||
|
var accountToSelect = null
|
||
|
|
||
|
// Reset selected account to the new instance corresponding to the old one.
|
||
|
if($scope.account) {
|
||
|
// Find the new instance of the previously selected account.
|
||
|
angular.forEach($scope.accounts, function(account) {
|
||
|
if(account.id == $scope.account.id) {
|
||
|
accountToSelect = account;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// Set selected account to first one if not yet selected
|
||
|
if(!accountToSelect && $scope.accounts.length > 0){
|
||
|
accountToSelect = $scope.accounts[0];
|
||
|
}
|
||
|
|
||
|
// Reset to account to select
|
||
|
$scope.account = accountToSelect;
|
||
|
|
||
|
$scope.$emit("accountsLoadedEvent", {account: $scope.account});
|
||
|
};
|
||
|
|
||
|
// Callback function to select a new account.
|
||
|
$scope.selectAccount = function(account) {
|
||
|
if(account) {
|
||
|
$scope.account = account;
|
||
|
|
||
|
$scope.$emit("accountsLoadedEvent", {account: $scope.account});
|
||
|
}
|
||
|
};
|
||
|
|
||
|
$rootScope.$on("entrySavedEvent", $scope.loadAccounts);
|
||
|
$rootScope.$on("entryRemovedEvent", $scope.loadAccounts);
|
||
|
|
||
|
$scope.loadAccounts();
|
||
|
};
|
||
|
|