diff --git a/app/controllers/ChartController.php b/app/controllers/ChartController.php index 5755f01cb6..3b2f15322f 100644 --- a/app/controllers/ChartController.php +++ b/app/controllers/ChartController.php @@ -4,6 +4,7 @@ use Firefly\Exception\FireflyException; use Firefly\Helper\Preferences\PreferencesHelperInterface as PHI; use Firefly\Helper\Toolkit\ToolkitInterface as tk; use Firefly\Storage\Account\AccountRepositoryInterface as ARI; +use Firefly\Storage\Budget\BudgetRepositoryInterface as BRI; use Firefly\Storage\TransactionJournal\TransactionJournalRepositoryInterface as TJRI; /** @@ -16,17 +17,19 @@ class ChartController extends BaseController protected $_journals; protected $_tk; protected $_preferences; + protected $_budgets; /** * @param ARI $accounts * @param TJRI $journals */ - public function __construct(ARI $accounts, TJRI $journals, PHI $preferences, tk $toolkit) + public function __construct(ARI $accounts, TJRI $journals, PHI $preferences, tk $toolkit, BRI $budgets) { $this->_accounts = $accounts; $this->_journals = $journals; $this->_preferences = $preferences; $this->_tk = $toolkit; + $this->_budgets = $budgets; } /** @@ -121,7 +124,7 @@ class ChartController extends BaseController public function homeCategories() { - list($start, $end) =$this->_tk->getDateRangeDates(); + list($start, $end) = $this->_tk->getDateRangeDates(); $account = null; $result = []; // grab all transaction journals in this period: @@ -159,4 +162,56 @@ class ChartController extends BaseController return Response::json($chartData); } + + public function homeBudgets() + { + // grab all budgets in the time period, like the index does: + // get the budgets for this period: + $data = []; + + list($start, $end) = $this->_tk->getDateRangeDates(); + $budgets = $this->_budgets->getWithRepetitionsInPeriod($start, \Session::get('range')); + + $repeatFreq = Config::get('firefly.range_to_repeat_freq.'.Session::get('range')); + + $dateFormats = Config::get('firefly.date_formats_by_period.' . $repeatFreq); + if (is_null($dateFormats)) { + throw new FireflyException('No date formats for ' . \Session::get('range')); + } + + + $limitInPeriod = 'Envelope for ' . $start->format($dateFormats['display_date']); + $spentInPeriod = 'Spent in ' . $start->format($dateFormats['display_date']); + + $data['series'] = [ + [ + 'name' => $limitInPeriod, + 'data' => [] + ], + [ + 'name' => $spentInPeriod, + 'data' => [] + ], + ]; + + + foreach ($budgets as $budget) { + if ($budget->count > 0) { + $data['labels'][] = wordwrap($budget->name, 12, "
"); + } + foreach ($budget->limits as $limit) { + foreach ($limit->limitrepetitions as $rep) { + //0: envelope for period: + $data['series'][0]['data'][] = floatval($rep->amount); + $data['series'][1]['data'][] = $rep->spent; + } + } + + + } + return Response::json($data); + echo '
';
+        print_r($data);
+
+    }
 }
\ No newline at end of file
diff --git a/app/controllers/TransactionController.php b/app/controllers/TransactionController.php
index edc007129c..5640c3c004 100644
--- a/app/controllers/TransactionController.php
+++ b/app/controllers/TransactionController.php
@@ -43,6 +43,8 @@ class TransactionController extends BaseController
 
         $budgets[0] = '(no budget)';
 
+
+
         return View::make('transactions.create')->with('accounts', $accounts)->with('budgets', $budgets)->with(
             'what', $what
         );
@@ -106,14 +108,23 @@ class TransactionController extends BaseController
         }
 
         Session::flash('success', 'Transaction saved');
-        return Redirect::route('index');
+
+        if(Input::get('create') == '1') {
+            return Redirect::route('transactions.create',$what)->withInput();
+        } else {
+            return Redirect::route('index');
+        }
+
+
+
 
 
     }
 
-    public function index() {
+    public function index()
+    {
         $transactions = $this->_journal->paginate(25);
-        return View::make('transactions.index')->with('transactions',$transactions);
+        return View::make('transactions.index')->with('transactions', $transactions);
     }
 
     public function show($journalId)
diff --git a/app/routes.php b/app/routes.php
index 50580e697f..61aa59d180 100644
--- a/app/routes.php
+++ b/app/routes.php
@@ -9,6 +9,7 @@ Route::group(['before' => 'auth'], function () {
         // chart controller
         Route::get('/chart/home/account/{account?}', ['uses' => 'ChartController@homeAccount', 'as' => 'chart.home']);
         Route::get('/chart/home/categories', ['uses' => 'ChartController@homeCategories', 'as' => 'chart.categories']);
+        Route::get('/chart/home/budgets', ['uses' => 'ChartController@homeBudgets', 'as' => 'chart.budgets']);
         Route::get('/chart/home/info/{account}/{day}/{month}/{year}', ['uses' => 'ChartController@homeAccountInfo', 'as' => 'chart.info']);
 
 
diff --git a/app/views/index.blade.php b/app/views/index.blade.php
index e8c3b142bc..0d73a3b2d8 100644
--- a/app/views/index.blade.php
+++ b/app/views/index.blade.php
@@ -65,50 +65,10 @@
     

Budgets

- @foreach($budgets as $budget) -
{{{$budget->name}}} - @if($budget->count > 0) - @foreach($budget->limits as $limit) - @foreach($limit->limitrepetitions as $rep) - {{mf($rep->amount,false)}} - @endforeach - @endforeach - @endif -
- @if($budget->count == 0) -

- Add a new envelope -

- @else - @foreach($budget->limits as $limit) - @foreach($limit->limitrepetitions as $rep) - @if($rep->left() < 0) - -
-
{{mf($rep->amount,false)}}
-
{{mf($rep->overspent,false)}} -
+
+
- @else - -
-
{{mf($rep->spent,false)}} -
-
{{mf($rep->left,false)}} -
-
- @endif - - - @endforeach - @endforeach - @endif - @endforeach
diff --git a/app/views/transactions/create.blade.php b/app/views/transactions/create.blade.php index c3f5c76928..5634fc7ff4 100644 --- a/app/views/transactions/create.blade.php +++ b/app/views/transactions/create.blade.php @@ -53,7 +53,7 @@ @endif
- {{Form::select('account_id',$accounts,Input::old('account_id'),['class' => 'form-control'])}} + {{Form::select('account_id',$accounts,Input::old('account_id') ?: Input::get('account'),['class' => 'form-control'])}}
@endif @@ -107,7 +107,7 @@ @endif
- +
@@ -123,7 +123,7 @@

Optional fields

- + @if($what == 'withdrawal')
@@ -133,11 +133,11 @@
@endif - +
- + Add more fine-grained information to this transaction by entering a category. Like the beneficiary-field, this field will auto-complete existing categories but can also be used to create new ones. @@ -156,7 +156,7 @@
diff --git a/public/assets/javascript/index.js b/public/assets/javascript/index.js index e895811d89..02981645e4 100644 --- a/public/assets/javascript/index.js +++ b/public/assets/javascript/index.js @@ -20,6 +20,10 @@ $(function () { return '$' + Highcharts.numberFormat(this.y, 0); } }, + subtitle: { + text: 'View more', + useHTML: true + }, xAxis: { floor: 0, @@ -97,6 +101,10 @@ $(function () { title: { text: 'Expenses for each categorie' }, + subtitle: { + text: 'View more', + useHTML: true + }, credits: { enabled: false }, @@ -148,5 +156,85 @@ $(function () { /** * Get chart data for budget charts. */ + $.getJSON('chart/home/budgets').success(function (data) { + $('#budgets').highcharts({ + chart: { + type: 'bar' + }, + title: { + text: 'Budgets and spending' + }, + subtitle: { + text: 'View more', + useHTML: true + }, + xAxis: { + categories: data.labels, + title: { + text: null + }, + labels: { + style: { + fontSize: '11px', + fontFamily: 'Verdana, sans-serif' + } + } + }, + yAxis: { + min: 0, + title: { + text: 'Amount (€)', + align: 'high' + }, + labels: { + overflow: 'justify' + } + }, + tooltip: { + formatter: function() {return '€ ' + Highcharts.numberFormat(this.y,2);} + }, + plotOptions: { + bar: { + dataLabels: { + enabled: true, + } + } + }, + legend: { + layout: 'vertical', + align: 'right', + verticalAlign: 'top', + x: -40, + y: 100, + floating: true, + borderWidth: 1, + backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor || '#FFFFFF'), + shadow: true + }, + credits: { + enabled: false + }, + series: data.series +// [ +// { +// name: 'Budget in X', +// data: [107, 31, 635, 203, 2] +// }, +// { +// name: 'Expense in X', +// data: [107, 31, 635, 203, 2] +// }, +// { +// name: 'Budget now', +// data: [133, 156, 947, 408, 6] +// }, +// { +// name: 'Expense now', +// data: [973, 914, 454, 732, 34] +// } +// ] + }); + }); + }); \ No newline at end of file