api: Move client files and get a basic dashboard working
This commit is contained in:
		
							parent
							
								
									5e3d6d6d3d
								
							
						
					
					
						commit
						619ea9906c
					
				| @ -1,7 +0,0 @@ | |||||||
| ul.accounts, ul.accounts ul { |  | ||||||
|   list-style-type: none; |  | ||||||
|   padding-left: 0; |  | ||||||
| } |  | ||||||
| ul.accounts ul { |  | ||||||
|   margin-left: 15px; |  | ||||||
| } |  | ||||||
| @ -1,29 +0,0 @@ | |||||||
| <html> |  | ||||||
| <head> |  | ||||||
|   <meta charset="utf-8"> |  | ||||||
|   <title>hledger-api example 01</title> |  | ||||||
|   <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> |  | ||||||
| </head |  | ||||||
| <body> |  | ||||||
| 
 |  | ||||||
| <p> |  | ||||||
| Account names: |  | ||||||
| 
 |  | ||||||
| <pre></pre> |  | ||||||
| 
 |  | ||||||
| <script> |  | ||||||
| $(document).ready( |  | ||||||
| function() { |  | ||||||
|   $.ajax({ |  | ||||||
|     url: "http://localhost:8001/accounts", |  | ||||||
|     context: document.body, |  | ||||||
|     success: function(data){ |  | ||||||
|       $('pre').text(data.join('\n')); |  | ||||||
|     } |  | ||||||
|   }); |  | ||||||
| } |  | ||||||
| ); |  | ||||||
| </script> |  | ||||||
| 
 |  | ||||||
| </body> |  | ||||||
| </html> |  | ||||||
| @ -1,88 +0,0 @@ | |||||||
| <html> |  | ||||||
| <head> |  | ||||||
|   <meta charset="utf-8"> |  | ||||||
|   <title>hledger-api example 01</title> |  | ||||||
|   <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> |  | ||||||
| </head |  | ||||||
| 
 |  | ||||||
| <body> |  | ||||||
|   <table border=0 width="100%"> |  | ||||||
|     <tr valign="top"> |  | ||||||
|       <td width="50%"> |  | ||||||
| 
 |  | ||||||
|         <h2>Commodities</h2>  |  | ||||||
|         <pre id="commodities"></pre> |  | ||||||
| 
 |  | ||||||
|         <h2>Market Prices</h2>  |  | ||||||
|         <pre id="prices"></pre> |  | ||||||
| 
 |  | ||||||
|         <h2>Account names</h2>  |  | ||||||
|         <pre id="accounts"></pre> |  | ||||||
| 
 |  | ||||||
|       </td> |  | ||||||
|       <td width="50%"> |  | ||||||
| 
 |  | ||||||
|         <h2>Transactions</h2>  |  | ||||||
|         <pre id="transactions"></pre> |  | ||||||
| 
 |  | ||||||
|       </td> |  | ||||||
|     </tr> |  | ||||||
|   </table> |  | ||||||
| 
 |  | ||||||
| <script> |  | ||||||
| 
 |  | ||||||
| $(document).ready(function(){ |  | ||||||
| 
 |  | ||||||
|   get('commodities', id); |  | ||||||
|   get('prices', showMarketPrice); |  | ||||||
|   get('accounts', id); |  | ||||||
|   get('transactions', showTransaction); |  | ||||||
| 
 |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| function get(method, showfn) { |  | ||||||
|   return $.ajax({ |  | ||||||
|     url: "http://localhost:8001/"+method, |  | ||||||
|     context: document.body, |  | ||||||
|     success: function(data){ |  | ||||||
|       $('#'+method).text(data.map(showfn).join('\n')); |  | ||||||
|     }, |  | ||||||
|     error: function(jqXHR, textStatus, errorThrown){ |  | ||||||
|       alert('error'); |  | ||||||
|     } |  | ||||||
|   }); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function id(x){ return x; } |  | ||||||
| 
 |  | ||||||
| function showAmount(a) { |  | ||||||
|   return a.acommodity + a.aquantity; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function showMixedAmount(ma) { |  | ||||||
|   return ma.map(showAmount).join(', '); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function showMarketPrice(mp) { |  | ||||||
|   return mp.mpdate + ' ' + mp.mpcommodity + ' ' + showAmount(mp.mpamount); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function showPosting(p) { |  | ||||||
|   return p.paccount + '  ' + showMixedAmount(p.pamount); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function showPostingLine(p) { |  | ||||||
|   return '    ' + showPosting(p) + '\n'; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function showTransaction(t) { |  | ||||||
|   return ( |  | ||||||
|     t.tdate + ' ' + t.tdescription + '\n' |  | ||||||
|     + t.tpostings.map(showPostingLine).join('') |  | ||||||
|   ); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| </script> |  | ||||||
| 
 |  | ||||||
| </body> |  | ||||||
| </html> |  | ||||||
| @ -1 +0,0 @@ | |||||||
| Files under this directory are served by hledger-api when no other API route is matched. |  | ||||||
							
								
								
									
										22
									
								
								hledger-api/static/hledger-client.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								hledger-api/static/hledger-client.css
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | ul.accounts, ul.accounts ul { | ||||||
|  |   list-style-type: none; | ||||||
|  |   padding-left: 0; | ||||||
|  | } | ||||||
|  | ul.accounts ul { | ||||||
|  |   margin-left: 15px; | ||||||
|  | } | ||||||
|  | ul.accounts li { | ||||||
|  |   clear: both; | ||||||
|  |   border-top: 1px dotted #888; | ||||||
|  | } | ||||||
|  | ul.accounts .balances { | ||||||
|  |   display: block; | ||||||
|  |   float: right; | ||||||
|  |   text-align: right; | ||||||
|  | } | ||||||
|  | ul.accounts .balance { | ||||||
|  |   display: block; | ||||||
|  | } | ||||||
|  | ul.accounts .balance .commodity-side-L { | ||||||
|  |   float: left; | ||||||
|  | } | ||||||
| @ -2,12 +2,26 @@ var hledger = angular.module('hledger', [ | |||||||
|   'ui.router', |   'ui.router', | ||||||
|   'ngResource' |   'ngResource' | ||||||
| ]) | ]) | ||||||
|  | function listToTree(list, id_field, parent_field) { | ||||||
|  |   children = function(list, parent_id) { | ||||||
|  |     return $.grep(list, | ||||||
|  |       function(element) { | ||||||
|  |         return element[parent_field] === parent_id | ||||||
|  |       }); | ||||||
|  |   } | ||||||
|  |   $.map(list, function(element) { | ||||||
|  |     element.children = children(list, element[id_field]) | ||||||
|  |   }); | ||||||
|  |   root = children(list, ''); | ||||||
|  |   return root; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| hledger.config(function($stateProvider, $urlRouterProvider) { | hledger.config(function($stateProvider, $urlRouterProvider) { | ||||||
|   $urlRouterProvider.otherwise("/accounts"); |   $urlRouterProvider.otherwise("/accounts"); | ||||||
|   $stateProvider |   $stateProvider | ||||||
|     .state('accounts', { |     .state('accounts', { | ||||||
|       url: "/accounts", |       url: "/accounts", | ||||||
|       templateUrl: "accounts/view.html", |       templateUrl: "accounts/index.html", | ||||||
|       controller: 'AccountsController' |       controller: 'AccountsController' | ||||||
|     }) |     }) | ||||||
|     .state('help', { |     .state('help', { | ||||||
| @ -22,7 +36,7 @@ hledger.factory('Journal', function($resource) { | |||||||
| 
 | 
 | ||||||
| hledger.controller("JournalController", function($scope, Journal) { | hledger.controller("JournalController", function($scope, Journal) { | ||||||
|   Journal.query(function(data) { |   Journal.query(function(data) { | ||||||
|    $scope.journal = data; |     $scope.journal = data; | ||||||
|   }); |   }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| @ -32,6 +46,6 @@ hledger.factory('Account', function($resource) { | |||||||
| 
 | 
 | ||||||
| hledger.controller("AccountsController", function($scope, Account) { | hledger.controller("AccountsController", function($scope, Account) { | ||||||
|   Account.query(function(data) { |   Account.query(function(data) { | ||||||
|    $scope.accounts = data; |     $scope.accounts = listToTree(data, 'aname', 'aparentname')[0].children; | ||||||
|   }); |   }); | ||||||
| }); | }); | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user