mirror of
https://github.com/gwenhael-le-moine/ledgerrb.git
synced 2024-12-26 09:59:18 +01:00
merge
This commit is contained in:
commit
227f87af8f
4 changed files with 105 additions and 80 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -34,3 +34,4 @@
|
|||
.rvmrc
|
||||
/thin.*
|
||||
/bundle/
|
||||
vendor/
|
||||
|
|
|
@ -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" )
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<md-content flex="100" layout="column">
|
||||
<md-card flex="100" layout="row">
|
||||
<md-card flex="20">
|
||||
<select multiple="true" data-ng-model="graphed_accounts">
|
||||
<option data-ng-repeat="account in accounts">{{account}}</option>
|
||||
</select>
|
||||
<select style="height: 100%;" multiple ng:model="graphed_accounts">
|
||||
<option ng:repeat="account in accounts">{{account}}</option>
|
||||
</select>
|
||||
</md-card>
|
||||
<md-card flex="81">
|
||||
<nvd3 data="graphiques.monthly_values.data"
|
||||
|
@ -12,50 +12,50 @@
|
|||
</md-card>
|
||||
<h1>{{period | amDateFormat:'MMMM YYYY'}}</h1>
|
||||
<md-card flex="100" layout="column"
|
||||
data-ng-repeat="bucket in balance.buckets">
|
||||
ng:repeat="bucket in balance.buckets">
|
||||
<md-toolbar>
|
||||
<span data-ng-repeat="account in bucket.total_detailed">{{account.account}} = {{account.amount | number:2}} €</span>
|
||||
<span ng:repeat="account in bucket.total_detailed">{{account.account}} = {{account.amount | number:2}} €</span>
|
||||
</md-toolbar>
|
||||
<md-content layout="row">
|
||||
<md-card flex="20">
|
||||
<select multiple
|
||||
data-ng-model="bucket.accounts_selected"
|
||||
data-ng-options="account.account for account in bucket.raw_data | orderBy:'account'"
|
||||
data-ng-change="filter_data()">
|
||||
<select style="height: 100%;" multiple
|
||||
ng:model="bucket.accounts_selected"
|
||||
ng:options="account.account for account in bucket.raw_data | orderBy:'account'"
|
||||
ng:change="filter_data()">
|
||||
<option value=''>...</option>
|
||||
</select>
|
||||
</md-card>
|
||||
<md-card flex="20">
|
||||
<md-card flex="78">
|
||||
<nvd3 data="bucket.data"
|
||||
options="bucket.pie_graph_options" >
|
||||
</nvd3>
|
||||
</md-card>
|
||||
<md-card flex="56">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><md-buton data-ng-click="bucket.order_by( 'account' )">account</md-buton></th>
|
||||
<th><md-buton data-ng-click="bucket.order_by( 'amount' )">amount</md-buton></th>
|
||||
<th><md-buton data-ng-click="bucket.order_by( 'score' )">score</md-buton></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr data-ng-repeat="account in bucket.data | orderBy:bucket.orderBy:bucket.orderDesc"
|
||||
data-ng-class="{'even': $even, 'odd': $odd}"
|
||||
style="border-left:10px solid {{coloring_score( account.score )}};border-right:10px solid {{coloring_score( account.score )}}">
|
||||
<td style="border-bottom:1px solid {{coloring_score( account.score )}}">
|
||||
{{account.account}}
|
||||
</td>
|
||||
<td style="text-align:right;border-bottom:1px solid {{coloring_score( account.score )}}">
|
||||
{{account.amount | number:2}} €
|
||||
</td>
|
||||
<td style="text-align:right;border-bottom:1px solid {{coloring_score( account.score )}}">
|
||||
{{account.score}}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</md-card>
|
||||
<!-- <md-card flex="56">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><md-buton ng:click="bucket.order_by( 'account' )">account</md-buton></th>
|
||||
<th><md-buton ng:click="bucket.order_by( 'amount' )">amount</md-buton></th>
|
||||
<th><md-buton ng:click="bucket.order_by( 'score' )">score</md-buton></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng:repeat="account in bucket.data | orderBy:bucket.orderBy:bucket.orderDesc"
|
||||
ng:class="{'even': $even, 'odd': $odd}"
|
||||
style="border-left:10px solid {{coloring_score( account.score )}};border-right:10px solid {{coloring_score( account.score )}}">
|
||||
<td style="border-bottom:1px solid {{coloring_score( account.score )}}">
|
||||
{{account.account}}
|
||||
</td>
|
||||
<td style="text-align:right;border-bottom:1px solid {{coloring_score( account.score )}}">
|
||||
{{account.amount | number:2}} €
|
||||
</td>
|
||||
<td style="text-align:right;border-bottom:1px solid {{coloring_score( account.score )}}">
|
||||
{{account.score}}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</md-card> -->
|
||||
</md-content>
|
||||
</md-card>
|
||||
</md-content>
|
||||
|
|
Loading…
Reference in a new issue