mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Allow piggy banks to be ordered.
This commit is contained in:
parent
2fa7d2bd56
commit
063c8025aa
@ -136,14 +136,13 @@ class PiggyBankController extends Controller
|
|||||||
return view('piggy-banks.edit', compact('subTitle', 'subTitleIcon', 'piggyBank', 'accounts', 'periods', 'preFilled'));
|
return view('piggy-banks.edit', compact('subTitle', 'subTitleIcon', 'piggyBank', 'accounts', 'periods', 'preFilled'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function index(AccountRepositoryInterface $repository)
|
public function index(AccountRepositoryInterface $repository)
|
||||||
{
|
{
|
||||||
/** @var Collection $piggyBanks */
|
/** @var Collection $piggyBanks */
|
||||||
$piggyBanks = Auth::user()->piggyBanks()->where('repeats', 0)->get();
|
$piggyBanks = Auth::user()->piggyBanks()->where('repeats', 0)->orderBy('order', 'ASC')->get();
|
||||||
|
|
||||||
$accounts = [];
|
$accounts = [];
|
||||||
/** @var PiggyBank $piggyBank */
|
/** @var PiggyBank $piggyBank */
|
||||||
@ -175,6 +174,23 @@ class PiggyBankController extends Controller
|
|||||||
return view('piggy-banks.index', compact('piggyBanks', 'accounts'));
|
return view('piggy-banks.index', compact('piggyBanks', 'accounts'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allow user to order piggy banks.
|
||||||
|
*/
|
||||||
|
public function order(PiggyBankRepositoryInterface $repository)
|
||||||
|
{
|
||||||
|
$data = Input::get('order');
|
||||||
|
|
||||||
|
// set all users piggy banks to zero:
|
||||||
|
$repository->reset();
|
||||||
|
|
||||||
|
if (is_array($data)) {
|
||||||
|
foreach ($data as $order => $id) {
|
||||||
|
echo 'set '.$id.' to position '.($order+1)."\n";
|
||||||
|
$repository->setOrder(intval($id), (intval($order) + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* POST add money to piggy bank
|
* POST add money to piggy bank
|
||||||
|
@ -279,6 +279,7 @@ Route::group(
|
|||||||
Route::post('/piggy-banks/destroy/{piggyBank}', ['uses' => 'PiggyBankController@destroy', 'as' => 'piggy-banks.destroy']);
|
Route::post('/piggy-banks/destroy/{piggyBank}', ['uses' => 'PiggyBankController@destroy', 'as' => 'piggy-banks.destroy']);
|
||||||
Route::post('/piggy-banks/add/{piggyBank}', ['uses' => 'PiggyBankController@postAdd', 'as' => 'piggy-banks.add']); # add money
|
Route::post('/piggy-banks/add/{piggyBank}', ['uses' => 'PiggyBankController@postAdd', 'as' => 'piggy-banks.add']); # add money
|
||||||
Route::post('/piggy-banks/remove/{piggyBank}', ['uses' => 'PiggyBankController@postRemove', 'as' => 'piggy-banks.remove']); # remove money.
|
Route::post('/piggy-banks/remove/{piggyBank}', ['uses' => 'PiggyBankController@postRemove', 'as' => 'piggy-banks.remove']); # remove money.
|
||||||
|
Route::post('/piggy-banks/sort', ['uses' => 'PiggyBankController@order', 'as' => 'piggy-banks.order']);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Preferences Controller
|
* Preferences Controller
|
||||||
|
@ -2,9 +2,8 @@
|
|||||||
|
|
||||||
namespace FireflyIII\Repositories\PiggyBank;
|
namespace FireflyIII\Repositories\PiggyBank;
|
||||||
|
|
||||||
use Amount;
|
|
||||||
use Auth;
|
use Auth;
|
||||||
use Carbon\Carbon;
|
use DB;
|
||||||
use FireflyIII\Models\PiggyBank;
|
use FireflyIII\Models\PiggyBank;
|
||||||
use FireflyIII\Models\PiggyBankRepetition;
|
use FireflyIII\Models\PiggyBankRepetition;
|
||||||
use FireflyIII\Models\Reminder;
|
use FireflyIII\Models\Reminder;
|
||||||
@ -88,6 +87,41 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
|
|||||||
return $part;
|
return $part;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set all piggy banks to order 0.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function reset()
|
||||||
|
{
|
||||||
|
DB::table('piggy_banks')
|
||||||
|
->leftJoin('accounts', 'accounts.id', '=', 'piggy_banks.id')
|
||||||
|
->where('accounts.user_id', Auth::user()->id)
|
||||||
|
->update(['order' => 0, 'piggy_banks.updated_at' => DB::Raw('NOW()')]);
|
||||||
|
//Auth::user()->piggyBanks()->update(['order' => 0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* set id of piggy bank.
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param int $order
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setOrder($id, $order)
|
||||||
|
{
|
||||||
|
$piggyBank = PiggyBank::leftJoin('accounts', 'accounts.id', '=', 'piggy_banks.id')->where('accounts.user_id', Auth::user()->id)
|
||||||
|
->where('piggy_banks.id',$id)->first(['piggy_banks.*']);
|
||||||
|
if ($piggyBank) {
|
||||||
|
$piggyBank->order = $order;
|
||||||
|
$piggyBank->save();
|
||||||
|
} else {
|
||||||
|
echo "Found no piggy for id #".$id."\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $data
|
* @param array $data
|
||||||
*
|
*
|
||||||
@ -132,5 +166,4 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
|
|||||||
|
|
||||||
return $piggyBank;
|
return $piggyBank;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -37,6 +37,23 @@ interface PiggyBankRepositoryInterface
|
|||||||
*/
|
*/
|
||||||
public function createPiggyBankPart(array $data);
|
public function createPiggyBankPart(array $data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set all piggy banks to order 0.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function reset();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* set id of piggy bank.
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param int $order
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setOrder($id, $order);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
#daterange {cursor:pointer;}
|
#daterange {cursor:pointer;}
|
||||||
.google-chart-error {height:30px;background:url('/images/error.png') no-repeat center center;}
|
.google-chart-error {height:30px;background:url('/images/error.png') no-repeat center center;}
|
||||||
|
.handle {cursor:move;}
|
@ -5,18 +5,41 @@ $(function () {
|
|||||||
if (typeof(googleLineChart) === 'function' && typeof(piggyBankID) !== 'undefined') {
|
if (typeof(googleLineChart) === 'function' && typeof(piggyBankID) !== 'undefined') {
|
||||||
googleLineChart('chart/piggy-history/' + piggyBankID, 'piggy-bank-history');
|
googleLineChart('chart/piggy-history/' + piggyBankID, 'piggy-bank-history');
|
||||||
}
|
}
|
||||||
|
$('#sortable').sortable(
|
||||||
|
{
|
||||||
|
stop: stopSorting,
|
||||||
|
handle: '.handle'
|
||||||
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
function addMoney(e) {
|
function addMoney(e) {
|
||||||
var pigID = parseInt($(e.target).data('id'));
|
var pigID = parseInt($(e.target).data('id'));
|
||||||
$('#moneyManagementModal').empty().load('piggy-banks/add/' + pigID, function() {$('#moneyManagementModal').modal('show');});
|
$('#moneyManagementModal').empty().load('piggy-banks/add/' + pigID, function () {
|
||||||
|
$('#moneyManagementModal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeMoney(e) {
|
function removeMoney(e) {
|
||||||
var pigID = parseInt($(e.target).data('id'));
|
var pigID = parseInt($(e.target).data('id'));
|
||||||
$('#moneyManagementModal').empty().load('piggy-banks/remove/' + pigID, function() {$('#moneyManagementModal').modal('show');});
|
$('#moneyManagementModal').empty().load('piggy-banks/remove/' + pigID, function () {
|
||||||
|
$('#moneyManagementModal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
function stopSorting() {
|
||||||
|
$('.loadSpin').addClass('fa fa-refresh fa-spin');
|
||||||
|
var order = [];
|
||||||
|
$.each($('#sortable>div'), function(i,v) {
|
||||||
|
var holder = $(v);
|
||||||
|
var id = holder.data('id');
|
||||||
|
order.push(id);
|
||||||
|
});
|
||||||
|
$.post('/piggy-banks/sort',{_token: token, order: order}).success(function(data) {
|
||||||
|
"use strict";
|
||||||
|
$('.loadSpin').removeClass('fa fa-refresh fa-spin');
|
||||||
|
});
|
||||||
}
|
}
|
@ -8,13 +8,13 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row" id="sortable">
|
||||||
@foreach($piggyBanks as $piggyBank)
|
@foreach($piggyBanks as $piggyBank)
|
||||||
<div class="col-lg-3 col-md-4 col-sm-12 col-xs-12">
|
<div class="col-lg-3 col-md-4 col-sm-12 col-xs-12" data-id="{{$piggyBank->id}}">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<i class="fa fa-fw fa-rocket"></i> <a href="{{route('piggy-banks.show',$piggyBank->id)}}" title="{{{$piggyBank->name}}}">{{{$piggyBank->name}}}</a>
|
<i class="loadSpin"></i>
|
||||||
|
<i class="fa fa-fw fa-bars handle"></i> <a href="{{route('piggy-banks.show',$piggyBank->id)}}" title="{{{$piggyBank->name}}}">{{{$piggyBank->name}}}</a>
|
||||||
<!-- ACTIONS MENU -->
|
<!-- ACTIONS MENU -->
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
@ -129,5 +129,9 @@
|
|||||||
|
|
||||||
@stop
|
@stop
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
|
<script type="text/javascript">
|
||||||
|
var token = "{{csrf_token()}}";
|
||||||
|
</script>
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
|
||||||
<script type="text/javascript" src="js/piggy-banks.js"></script>
|
<script type="text/javascript" src="js/piggy-banks.js"></script>
|
||||||
@stop
|
@stop
|
||||||
|
Loading…
Reference in New Issue
Block a user