diff --git a/.gitignore b/.gitignore index 74a38e1e..c23999f9 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ .rvmrc /thin.* /bundle/ +vendor/ diff --git a/lib/ledger.rb b/lib/ledger.rb index f4326aee..325f8a2b 100644 --- a/lib/ledger.rb +++ b/lib/ledger.rb @@ -63,6 +63,7 @@ module Ledger period = period.nil? ? '' : "-p '#{period}'" depth = depth.nil? ? '' : "--depth #{depth}" operation = cleared ? 'cleared' : 'balance' + run( "--flat --no-total --exchange '#{CURRENCY}' #{period} #{depth}", operation, categories ) .split( "\n" ) .map do |line| @@ -72,7 +73,20 @@ module Ledger amount: line_array[ 0 ].tr( SEPARATOR, '.' ).to_f } end end - + + # def int_treefied_balance( node ) + # return { name: node[:account], size: node[:amount] } unless node[:account].include( ':' ) + + # { name: node[:account].split(':').first, + # children: int_treefied_balance( ... ) } + # end + + # def treefeid_balance( cleared = false, depth = nil, period = nil, categories = '' ) + # bal = balance( cleared, depth, period, categories ) + + + # end + def cleared run( "--flat --no-total --exchange '#{CURRENCY}'", 'cleared', 'Assets Equity' ) .split( "\n" ) diff --git a/public/app/js/controllers/DashboardCtrl.js b/public/app/js/controllers/DashboardCtrl.js index 4b5a8f29..309bc772 100644 --- a/public/app/js/controllers/DashboardCtrl.js +++ b/public/app/js/controllers/DashboardCtrl.js @@ -119,14 +119,19 @@ app.controller( 'DashboardCtrl', }; this.pie_graph_options = { chart: { type: 'pieChart', + donut: true, + donutRatio: 0.25, height: 300, x: function( d ) { return d.account; }, y: function( d ) { return d.amount; }, showLabels: false, - showLegend: false, + showLegend: true, + legendPosition: 'right', + showTooltipPercent: true, duration: 500, labelThreshold: 0.01, - labelSunbeamLayout: true + labelSunbeamLayout: true, + donutLabelsOutside: true } }; }; @@ -202,48 +207,53 @@ app.controller( 'DashboardCtrl', } ); } ); - $scope.graphiques = { monthly_values: { options: { chart: { type: 'multiBarChart', - height: 300, - showControls: false, - showLegend: true, - showLabels: true, - stacked: false, - duration: 500, - reduceXTicks: false, - rotateLabels: 67, - labelSunbeamLayout: true, - useInteractiveGuideline: false, - multibar: { - dispatch: { - elementClick: function( event ) { - $scope.period = event.data.x; - retrieve_period_detailed_data(); - } - } - }} - }, - data: _.chain( response.data ) - .keys() - .reverse() - .map( function( key ) { - var multiplicator = ( key == "Income" ) ? -1 : 1; - return { key: key, - values: _.chain(response.data[ key ]).map( function( value ) { - var date = new Date( value.date ); - var period = date.getFullYear() + '-' + ( date.getMonth() < 9 ? '0' : '' ) + ( date.getMonth() + 1 ); - $scope.periods.push( period ); + $scope.graphiques = { + monthly_values: { + options: { + chart: { + type: 'multiBarChart', + height: 300, + showControls: false, + showLegend: true, + showLabels: true, + stacked: false, + duration: 500, + reduceXTicks: false, + rotateLabels: 67, + labelSunbeamLayout: true, + useInteractiveGuideline: false, + multibar: { + dispatch: { + elementClick: function( event ) { + $scope.period = event.data.x; + retrieve_period_detailed_data(); + } + } + } + } + }, + data: _.chain( response.data ) + .keys() + .reverse() + .map( function( key ) { + var multiplicator = ( key == "Income" ) ? -1 : 1; + return { key: key, + values: _.chain(response.data[ key ]).map( function( value ) { + var date = new Date( value.date ); + var period = date.getFullYear() + '-' + ( date.getMonth() < 9 ? '0' : '' ) + ( date.getMonth() + 1 ); + $scope.periods.push( period ); - return { key: key, - x: period, - y: parseInt( value.amount ) * multiplicator }; - } ) - .sortBy( function( item ) { return item.x; } ) - .value() - }; - } ) - .value() - } - }; + return { key: key, + x: period, + y: parseInt( value.amount ) * multiplicator }; + } ) + .sortBy( function( item ) { return item.x; } ) + .value() + }; + } ) + .value() + } + }; $scope.periods = _.chain($scope.periods).uniq().sort().reverse().value(); $scope.period = _($scope.periods).first(); diff --git a/public/app/js/templates/dashboard.html b/public/app/js/templates/dashboard.html index 597822c3..b73daf89 100644 --- a/public/app/js/templates/dashboard.html +++ b/public/app/js/templates/dashboard.html @@ -1,9 +1,9 @@ - +

{{period | amDateFormat:'MMMM YYYY'}}

+ ng:repeat="bucket in balance.buckets"> - {{account.account}} = {{account.amount | number:2}} € + {{account.account}} = {{account.amount | number:2}} € - - + - - - - - - - - - - - - - - - - -
accountamountscore
- {{account.account}} - - {{account.amount | number:2}} € - - {{account.score}} -
-
+