Procházet zdrojové kódy

Feature: display account balance

febbweiss před 10 roky
rodič
revize
13b0a57600

+ 6 - 1
public/account/account.controller.js

@@ -65,6 +65,7 @@
 
         vm.dataLoading = false;
         vm.entries = [];
+        vm.balance = undefined;
         vm.categories = [];
         vm.sub_categories = [];
         vm.account = undefined;
@@ -92,6 +93,7 @@
             AccountService.list($routeParams.account_id)
                 .then(function(response) {
                    if( response.success ) {
+                       vm.balance = response.data.balance;
                        vm.entries = response.data.entries;
                    } else {
                        FlashService.error(response.message);
@@ -104,6 +106,7 @@
             AccountService.create(vm.account, vm.entry)
                 .then( function(response) {
                     if( response.success) {
+                        vm.balance = response.data.balance;
                         vm.entries = response.data.entries;
                     } else {
                         FlashService.error(response.message);
@@ -120,7 +123,8 @@
             AccountService.drop(vm.account, entry)
                 .then(function(response) {
                     if( response.success ) {
-                       vm.entries = response.data.entries;
+                        vm.balance = response.data.balance;
+                        vm.entries = response.data.entries;
                     } else {
                         FlashService.error( response.message );
                     }
@@ -134,6 +138,7 @@
                 .then( function(response) {
                     vm.dataLoading = false;
                     if( response.success ) {
+                        vm.balance = response.data.balance;
                         var index = vm.entries.map(function (item) {
                                 return item._id;
                             }).indexOf(origin._id);

+ 16 - 1
public/account/account.view.html

@@ -1,3 +1,18 @@
+<div class="page-header">
+    <div class="pull-left">
+        <h1>
+            {{vm.account.name}} 
+            <small ng-show="vm.reference"> - {{vm.account.reference}}</small>
+        </h1>
+    </div>
+    <div class="pull-right">
+        <h3 ng-class="{'text-danger': vm.balance <= 0}">
+            {{vm.balance | currency }}
+            <i class="fa fa-fw fa-balance-scale"></i> 
+        </h3>
+    </div>
+    <div class="clearfix"></div>
+</div>
 <div class="container-fluid div-striped">
     <div class="row vcenter">
         <form name="form" ng-submit="vm.create()" role="form">
@@ -17,7 +32,7 @@
                     </select>
                 </div>
             </div>
-            <div class="col-sm-2">
+            <div class="col-sm-2 hidden-sm">
                 <div class="form-group">
                     <select name="sub_category" class="form-control input-sm" ng-hide="!vm.entry.category || vm.sub_categories.length === 0" ng-model="vm.entry.sub_category">
                         <option value=""></option>

+ 2 - 1
public/index.html

@@ -22,7 +22,8 @@
                 </div>
                 
                 <ul class="nav navbar-nav">
-                    <li><a href="/login">Login</a></li>                    
+                    <li><a href="/login" ng-hide="{{globals.user}}">Login</a></li>                    
+                    <li><a href="/logout" ng-show="{{globals.user}}">Logout</a></li>                    
                 </ul>
             </nav>
         </div>

+ 8 - 0
test/account.controller.spec.js

@@ -94,6 +94,7 @@ describe('AccountController', function() {
             should.exist(accountController.account);
             accountController.account._id.should.be.equal(DEFAULT_ACCOUNT._id);
             accountController.entries.should.be.instanceof(Array).and.have.lengthOf(1);
+            accountController.balance.should.be.equal(100);
         }));
         
         it('should fail to init', inject(function($httpBackend) {
@@ -109,6 +110,7 @@ describe('AccountController', function() {
             
             should.not.exist(accountController.account);
             accountController.entries.should.be.instanceof(Array).and.have.lengthOf(0);
+            should.not.exist(accountController.balance);
         }));
     });
     
@@ -139,6 +141,7 @@ describe('AccountController', function() {
             entry.sub_category.should.be.equal(DEFAULT_ENTRY.sub_category);
             entry.type.should.be.equal(DEFAULT_ENTRY.type);
             should.exist(entry._id);
+            accountController.balance.should.be.equal(100);
         }));
         
         it('should fail to create entry', inject(function($httpBackend) {
@@ -165,6 +168,7 @@ describe('AccountController', function() {
             $timeout.flush();
             
             accountController.entries.should.be.instanceof(Array).and.have.lengthOf(0);
+            accountController.balance.should.be.equal(0);
         }));
     });
     
@@ -189,6 +193,7 @@ describe('AccountController', function() {
             $timeout.flush();
             
             accountController.entries.should.be.instanceof(Array).and.have.lengthOf(0);
+            accountController.balance.should.be.equal(0);
         }));
         
         it('should fail to delete unknown entry', inject(function($httpBackend) {
@@ -211,6 +216,7 @@ describe('AccountController', function() {
             
             accountController.entries.should.be.instanceof(Array).and.have.lengthOf(1);
             accountController.entries[0]._id.should.be.equal(DEFAULT_ENTRY._id);
+            accountController.balance.should.be.equal(100);
         }));
     });
 
@@ -248,6 +254,7 @@ describe('AccountController', function() {
             entry.category.should.be.equal(DEFAULT_ENTRY.category);
             entry.sub_category.should.be.equal(DEFAULT_ENTRY.sub_category);
             entry.type.should.be.equal(DEFAULT_ENTRY.type);
+            accountController.balance.should.be.equal(120);
         }));
         
         it('should fail to edit unknown entry', inject(function($httpBackend) {
@@ -283,6 +290,7 @@ describe('AccountController', function() {
             entry.category.should.be.equal(DEFAULT_ENTRY.category);
             entry.sub_category.should.be.equal(DEFAULT_ENTRY.sub_category);
             entry.type.should.be.equal(DEFAULT_ENTRY.type);
+            accountController.balance.should.be.equal(100);
         }));
     });