Sortable accounts.

This commit is contained in:
James Cole 2015-04-11 15:01:42 +02:00
parent 505aee22bb
commit 651a4fd3cc
6 changed files with 32 additions and 47 deletions

View File

@ -7,7 +7,6 @@ use FireflyIII\Http\Requests;
use FireflyIII\Http\Requests\AccountFormRequest;
use FireflyIII\Models\Account;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use Illuminate\Pagination\LengthAwarePaginator;
use Input;
use Redirect;
use Session;
@ -123,18 +122,14 @@ class AccountController extends Controller
$subTitle = Config::get('firefly.subTitlesByIdentifier.' . $what);
$subTitleIcon = Config::get('firefly.subIconsByIdentifier.' . $what);
$types = Config::get('firefly.accountTypesByIdentifier.' . $what);
$size = 50;
$page = intval(Input::get('page')) == 0 ? 1 : intval(Input::get('page'));
$set = $repository->getAccounts($types, $page);
$total = $repository->countAccounts($types);
$accounts = $repository->getAccounts($types);
// last activity:
/**
* HERE WE ARE
*/
$start = clone Session::get('start', Carbon::now()->startOfMonth());
$start->subDay();
$set->each(
$accounts->each(
function (Account $account) use ($start, $repository) {
$account->lastActivityDate = $repository->getLastActivity($account);
$account->startBalance = Steam::balance($account, $start);
@ -142,10 +137,6 @@ class AccountController extends Controller
}
);
$accounts = new LengthAwarePaginator($set, $total, $size, $page);
$accounts->setPath(route('accounts.index', $what));
return view('accounts.index', compact('what', 'subTitleIcon', 'subTitle', 'accounts'));
}

View File

@ -45,7 +45,7 @@ class BillController extends Controller
$expense = null;
// get users expense accounts:
$accounts = $repository->getAccounts(Config::get('firefly.accountTypesByIdentifier.expense'), -1);
$accounts = $repository->getAccounts(Config::get('firefly.accountTypesByIdentifier.expense'));
foreach ($matches as $match) {
$match = strtolower($match);

View File

@ -53,26 +53,16 @@ class AccountRepository implements AccountRepositoryInterface
/**
* @param array $types
* @param int $page
*
* @return Collection
*/
public function getAccounts(array $types, $page)
public function getAccounts(array $types)
{
$query = Auth::user()->accounts()->with(
$result = Auth::user()->accounts()->with(
['accountmeta' => function (HasMany $query) {
$query->where('name', 'accountRole');
}]
)->accountTypeIn($types)->orderBy('accounts.name', 'ASC');
if ($page == -1) {
$result = $query->get(['accounts.*']);
} else {
$size = 50;
$offset = ($page - 1) * $size;
$result = $query->take($size)->offset($offset)->get(['accounts.*']);
}
)->accountTypeIn($types)->orderBy('accounts.name', 'ASC')->get(['accounts.*'])->sortBy('name');
return $result;
}

View File

@ -33,11 +33,10 @@ interface AccountRepositoryInterface
/**
* @param array $types
* @param int $page
*
* @return mixed
*/
public function getAccounts(array $types, $page);
public function getAccounts(array $types);
/**
* @param TransactionJournal $journal

View File

@ -22,13 +22,16 @@
</div>
<div class="panel-body">
@include('list.accounts')
</div>
</div>
</div>
</div>
@stop
@section('styles')
<link rel="stylesheet" href="css/bootstrap-sortable.css" type="text/css" media="all" />
@stop
@section('scripts')
<script type="text/javascript">
var what = '{{{$what}}}';
@ -39,5 +42,6 @@
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="js/gcharts.options.js"></script>
<script type="text/javascript" src="js/gcharts.js"></script>
<script type="text/javascript" src="js/bootstrap-sortable.js"></script>
<script type="text/javascript" src="js/accounts.js"></script>
@stop

View File

@ -1,18 +1,18 @@
@if(is_object($accounts) && method_exists($accounts, 'render'))
{!! $accounts->render() !!}
@endif
<table class="table table-striped table-bordered">
<table class="table table-striped table-bordered sortable">
<thead>
<tr>
<th>&nbsp;</th>
<th data-defaultsort="disabled">&nbsp;</th>
<th>Name</th>
@if(isset($what) && $what == 'asset')
<th>Role</th>
@endif
<th>Current balance</th>
<th>Active</th>
<th>Last activity</th>
<th data-dateformat="DD-MMM-YYYY">Last activity</th>
<th>Balance difference between {{Session::get('start')->format('jS F Y')}} and {{Session::get('end')->format('jS F Y')}}</th>
</tr>
</thead>
<tbody>
@foreach($accounts as $account)
<tr>
<td>
@ -31,29 +31,30 @@
@endforeach
</td>
@endif
<td>{!! Amount::format(Steam::balance($account)) !!}</td>
<td>
<?php $balance = Steam::balance($account);?>
<td data-value="{{$balance}}">{!! Amount::format($balance) !!}</td>
<td data-value="{{intval($account->active)}}">
@if($account->active)
<i class="fa fa-fw fa-check"></i>
@else
<i class="fa fa-fw fa-ban"></i>
@endif
</td>
<td>
@if($account->lastActivityDate)
<td data-value="{{$account->lastActivityDate->format('d-m-Y')}}">
{{{$account->lastActivityDate->format('j F Y')}}}
@else
<em>Never</em>
@endif
</td>
<td>
@else
<td data-value="00-00-0000">
<em>Never</em>
</td>
@endif
<td data-value="{{$account->endBalance - $account->startBalance}}">
{!! Amount::format($account->endBalance - $account->startBalance) !!}
</td>
</tr>
@endforeach
</tbody>
</table>
@if(is_object($accounts) && method_exists($accounts, 'render'))
{!! $accounts->render() !!}
@endif