diff --git a/accountant/frontend/static/js/accounts.js b/accountant/frontend/static/js/accounts.js
index 62042d2..3878833 100644
--- a/accountant/frontend/static/js/accounts.js
+++ b/accountant/frontend/static/js/accounts.js
@@ -25,7 +25,8 @@ function account() {
};
// The AccountController.
-var AccountController = function($scope, $http, $rootScope, $window) {
+accountantApp.controller(
+ "AccountController", function($scope, $http, $rootScope, $window) {
// Account store and selection
$scope.account = null;
$scope.accounts = [];
@@ -193,5 +194,4 @@ var AccountController = function($scope, $http, $rootScope, $window) {
$rootScope.$on("operationRemovedEvent", $scope.loadAccounts);
$scope.loadAccounts();
-};
-
+});
diff --git a/accountant/frontend/static/js/app.js b/accountant/frontend/static/js/app.js
new file mode 100644
index 0000000..1946be9
--- /dev/null
+++ b/accountant/frontend/static/js/app.js
@@ -0,0 +1,49 @@
+/*
+ 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.
+
+ Accountant 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 .
+ */
+var accountantApp = angular.module("accountantApp", [
+ "mgcrea.ngStrap"
+])
+
+.config(function($interpolateProvider, $httpProvider) {
+ $interpolateProvider.startSymbol('[[');
+ $interpolateProvider.endSymbol(']]');
+
+ $httpProvider.interceptors.push(function($q) {
+ return {
+ "response": function(response) {
+ console.debug(response)
+ if(response.data.ok == false) {
+ return $q.reject(response)
+ }
+ // TODO Intercept validation error.
+ return response;
+ },
+
+ "responseError": function(response) {
+ // TODO Intercept Authentication Required error
+ $.pnotify({
+ type: "error",
+ title: response.data.title,
+ text: response.data.text,
+ width: 300
+ })
+
+ return $q.reject(response);
+ }
+ };
+ });
+});
diff --git a/accountant/frontend/static/js/entries.js b/accountant/frontend/static/js/entries.js
index 317d6c9..6b3c66e 100644
--- a/accountant/frontend/static/js/entries.js
+++ b/accountant/frontend/static/js/entries.js
@@ -14,7 +14,8 @@
You should have received a copy of the GNU Affero General Public License
along with Accountant. If not, see .
*/
-var EntryController = function($scope, $http, $rootScope, $filter) {
+accountantApp.controller(
+ "EntryController", function($scope, $http, $rootScope, $filter) {
// Entry store and selection
$scope.entries = [];
$scope.categories = [];
@@ -463,5 +464,4 @@ var EntryController = function($scope, $http, $rootScope, $filter) {
$scope.$on("entriesLoadedEvent", function(event, args) {
$scope.entriesLoaded(args.entries);
});
-};
-
+});
diff --git a/accountant/frontend/static/js/months.js b/accountant/frontend/static/js/months.js
index 47824b7..93b0e83 100644
--- a/accountant/frontend/static/js/months.js
+++ b/accountant/frontend/static/js/months.js
@@ -21,7 +21,8 @@ function month() {
}
-var MonthController = function($scope, $http, $rootScope) {
+accountantApp.controller(
+ "MonthController", function($scope, $http, $rootScope) {
// Month store and selection
$scope.months = null;
$scope.month = null;
@@ -112,5 +113,4 @@ var MonthController = function($scope, $http, $rootScope) {
$rootScope.$on("accountsLoadedEvent", function(event, args) {
$scope.loadMonths(args.account);
});
-};
-
+});
diff --git a/accountant/frontend/static/js/scheduler.js b/accountant/frontend/static/js/scheduler.js
index 606375a..8deaf08 100644
--- a/accountant/frontend/static/js/scheduler.js
+++ b/accountant/frontend/static/js/scheduler.js
@@ -14,7 +14,8 @@
You should have received a copy of the GNU Affero General Public License
along with Accountant. If not, see .
*/
-var SchedulerController = function($scope, $http, $rootScope, $filter) {
+accountantApp.controller(
+ "SchedulerController", function($scope, $http, $rootScope, $filter) {
// Operations store and selection
$scope.operations = [];
$scope.selectedOperation = null;
@@ -194,4 +195,4 @@ var SchedulerController = function($scope, $http, $rootScope, $filter) {
$rootScope.$on("accountsLoadedEvent", function(event, args){
$scope.loadOperations(args.account);
});
-}
+});
diff --git a/accountant/frontend/templates/layout.html b/accountant/frontend/templates/layout.html
index 17f0b28..f438206 100644
--- a/accountant/frontend/templates/layout.html
+++ b/accountant/frontend/templates/layout.html
@@ -15,7 +15,7 @@
along with Accountant. If not, see .
#}
-
+
Entries
@@ -83,65 +83,12 @@
{% block footer %}{% endblock %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
- {% block js %}{% endblock %}
+