diff --git a/src/main/java/de/tilman/transactions/SpringDataRestCustomization.java b/src/main/java/de/tilman/transactions/SpringDataRestCustomization.java new file mode 100644 index 0000000..6c1cc2a --- /dev/null +++ b/src/main/java/de/tilman/transactions/SpringDataRestCustomization.java @@ -0,0 +1,21 @@ +package de.tilman.transactions; + +import org.springframework.data.rest.core.config.RepositoryRestConfiguration; +import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter; +import org.springframework.stereotype.Component; + +import de.tilman.transactions.domain.Account; +import de.tilman.transactions.domain.Category; +import de.tilman.transactions.domain.Transaction; +import de.tilman.transactions.domain.User; + +@Component +public class SpringDataRestCustomization extends RepositoryRestConfigurerAdapter { + + // TODO Ask someone who knows better how to do all of this without exposing the IDs. Parsing URLs can't be the answer. + @Override + public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { + + config.exposeIdsFor(Account.class, Category.class, Transaction.class, User.class); + } +} diff --git a/src/main/java/de/tilman/transactions/controller/UserController.java b/src/main/java/de/tilman/transactions/controller/UserController.java new file mode 100644 index 0000000..70a31ef --- /dev/null +++ b/src/main/java/de/tilman/transactions/controller/UserController.java @@ -0,0 +1,15 @@ +package de.tilman.transactions.controller; + +import java.security.Principal; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class UserController { + + @RequestMapping("/user") + public Principal user(Principal user) { + return user; + } +} diff --git a/src/main/resources/static/js/controllers.js b/src/main/resources/static/js/controllers.js index 36b4214..10e177a 100644 --- a/src/main/resources/static/js/controllers.js +++ b/src/main/resources/static/js/controllers.js @@ -19,11 +19,12 @@ transactionControllers.controller('TransactionListCtrl', [ '$scope', '$location' if (typeof $scope.categories !== 'undefined') { // TODO default-Kategorie sollte per Account einstellbar sein + console.log('DID IT!'); $scope.transaction.category = $scope.categories[0]; } // get recent transactions - var transactions = $resource('/transactions/search/last10', { accountId: $scope.accountId }).get(); + var transactions = $resource('/transactions/search/last10', { accountId: $scope.account.id }).get(); transactions.$promise.then(function(data) { $scope.transactions = transactions._embedded.transactions; @@ -37,34 +38,31 @@ transactionControllers.controller('TransactionListCtrl', [ '$scope', '$location' } $scope.initList = function() { - - // TODO get account from frontend - $scope.accountId = 1; - $scope.account = 'http://localhost:8080/accounts/1'; - - //http://localhost:8080/accounts/search/findByUserName?username=betty@mail.com - -// var accounts = $resource('/accounts/search/findByUserName', { username: $scope.accountId }).get(); - - - - - console.log('initList()'); - - $scope.refreshList(); - - var categories = $resource('/categories/search/listForAccount', { accountId: $scope.accountId }).get(); - - categories.$promise.then(function(data) { - $scope.categories = categories._embedded.categories; + var userinfo = $resource('/user').get(); + userinfo.$promise.then(function(data) { + $scope.username = userinfo.name; - // select the first entry as default - $scope.transaction.category = categories._embedded.categories[0]; + var accountInfo = $resource('/accounts/search/findByUserName', { username: userinfo.name }).get(); + accountInfo.$promise.then(function(data) { + $scope.accounts = accountInfo._embedded.accounts; + $scope.account = $scope.accounts[0]; + + var categories = $resource('/categories/search/listForAccount', { accountId: $scope.accounts[0].id }).get(); + categories.$promise.then(function(data) { + $scope.categories = categories._embedded.categories; + $scope.refreshList(); + }); + }); }); } + $scope.refreshAccount = function() { + console.log('BINGO!'); + $scope.refreshList(); + }; + $scope.postTransaction = function() { // via Resource (might be moved into a service) @@ -87,6 +85,10 @@ transactionControllers.controller('TransactionListCtrl', [ '$scope', '$location' $scope.showTransaction = function(transaction) { $location.path('/transaction/' + transaction._links.self.href); }; + + + // initialize (http://stackoverflow.com/a/25662066/3761783) + $scope.initList(); } ]); diff --git a/src/main/resources/static/partials/transaction-list.html b/src/main/resources/static/partials/transaction-list.html index af4754d..870254a 100644 --- a/src/main/resources/static/partials/transaction-list.html +++ b/src/main/resources/static/partials/transaction-list.html @@ -1,6 +1,6 @@ -