mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Added the ability to change the range preference on the fly.
This commit is contained in:
parent
0fe6acc8cf
commit
287c2e7af8
@ -2,7 +2,7 @@
|
||||
use Carbon\Carbon;
|
||||
|
||||
return [
|
||||
'index_periods' => ['1D', '1W', '1M', '3M', '6M', 'custom'],
|
||||
'index_periods' => ['1D', '1W', '1M', '3M', '6M','1Y', 'custom'],
|
||||
'budget_periods' => ['daily', 'weekly', 'monthly', 'quarterly', 'half-year', 'yearly'],
|
||||
'piggybank_periods' => ['day', 'week', 'month', 'year'],
|
||||
'periods_to_text' => [
|
||||
@ -21,6 +21,14 @@ return [
|
||||
'6M' => 'half year',
|
||||
'custom' => '(custom)'
|
||||
],
|
||||
'range_to_name' => [
|
||||
'1D' => 'one day',
|
||||
'1W' => 'one week',
|
||||
'1M' => 'one month',
|
||||
'3M' => 'three months',
|
||||
'6M' => 'six months',
|
||||
'1Y' => 'one year',
|
||||
],
|
||||
'range_to_repeat_freq' => [
|
||||
'1D' => 'weekly',
|
||||
'1W' => 'weekly',
|
||||
|
@ -30,7 +30,8 @@ class HomeController extends BaseController
|
||||
$this->_reminders = $reminders;
|
||||
}
|
||||
|
||||
public function jobDev() {
|
||||
public function jobDev()
|
||||
{
|
||||
$fullName = storage_path() . DIRECTORY_SEPARATOR . 'firefly-export-2014-07-23.json';
|
||||
\Log::notice('Pushed start job.');
|
||||
Queue::push('Firefly\Queue\Import@start', ['file' => $fullName, 'user' => 1]);
|
||||
@ -40,7 +41,8 @@ class HomeController extends BaseController
|
||||
/*
|
||||
*
|
||||
*/
|
||||
public function sessionPrev() {
|
||||
public function sessionPrev()
|
||||
{
|
||||
/** @var \Firefly\Helper\Toolkit\ToolkitInterface $toolkit */
|
||||
$toolkit = App::make('Firefly\Helper\Toolkit\ToolkitInterface');
|
||||
$toolkit->prev();
|
||||
@ -51,7 +53,8 @@ class HomeController extends BaseController
|
||||
/*
|
||||
*
|
||||
*/
|
||||
public function sessionNext() {
|
||||
public function sessionNext()
|
||||
{
|
||||
/** @var \Firefly\Helper\Toolkit\ToolkitInterface $toolkit */
|
||||
$toolkit = App::make('Firefly\Helper\Toolkit\ToolkitInterface');
|
||||
$toolkit->next();
|
||||
@ -59,6 +62,19 @@ class HomeController extends BaseController
|
||||
//return Redirect::route('index');
|
||||
}
|
||||
|
||||
public function rangeJump($range)
|
||||
{
|
||||
|
||||
$viewRange = $this->_preferences->get('viewRange', '1M');
|
||||
$valid = ['1D', '1W', '1M', '3M', '6M', '1Y',];
|
||||
|
||||
if(in_array($range,$valid)) {
|
||||
$this->_preferences->set('viewRange', $range);
|
||||
Session::forget('range');
|
||||
}
|
||||
return Redirect::back();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
|
@ -84,7 +84,8 @@ class Toolkit implements ToolkitInterface
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function checkImportJobs() {
|
||||
public function checkImportJobs()
|
||||
{
|
||||
/*
|
||||
* Get all jobs.
|
||||
*/
|
||||
@ -134,7 +135,6 @@ class Toolkit implements ToolkitInterface
|
||||
*/
|
||||
protected function _updateStartDate($range, Carbon $start)
|
||||
{
|
||||
$today = new Carbon;
|
||||
switch ($range) {
|
||||
case '1D':
|
||||
$start->startOfDay();
|
||||
@ -149,12 +149,15 @@ class Toolkit implements ToolkitInterface
|
||||
$start->firstOfQuarter();
|
||||
break;
|
||||
case '6M':
|
||||
if (intval($today->format('m')) >= 7) {
|
||||
if (intval($start->format('m')) >= 7) {
|
||||
$start->startOfYear()->addMonths(6);
|
||||
} else {
|
||||
$start->startOfYear();
|
||||
}
|
||||
break;
|
||||
case '1Y':
|
||||
$start->startOfYear();
|
||||
break;
|
||||
}
|
||||
|
||||
return $start;
|
||||
@ -170,33 +173,32 @@ class Toolkit implements ToolkitInterface
|
||||
*/
|
||||
protected function _updateEndDate($range, Carbon $start)
|
||||
{
|
||||
$end = clone $start;
|
||||
switch ($range) {
|
||||
case '1D':
|
||||
$end = clone $start;
|
||||
$end->endOfDay();
|
||||
break;
|
||||
case '1W':
|
||||
$end = clone $start;
|
||||
$end->endOfWeek();
|
||||
break;
|
||||
case '1M':
|
||||
$end = clone $start;
|
||||
$end->endOfMonth();
|
||||
break;
|
||||
case '3M':
|
||||
$end = clone $start;
|
||||
$end->lastOfQuarter();
|
||||
break;
|
||||
case '6M':
|
||||
$end = clone $start;
|
||||
if (intval($start->format('m')) >= 7) {
|
||||
$end->endOfYear();
|
||||
} else {
|
||||
$end->startOfYear()->addMonths(6);
|
||||
}
|
||||
break;
|
||||
case '1Y':
|
||||
$end->endOfYear();
|
||||
break;
|
||||
default:
|
||||
throw new FireflyException('Nothing happened with $end!');
|
||||
throw new FireflyException('_updateEndDate cannot handle $range ' . $range);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -209,9 +211,30 @@ class Toolkit implements ToolkitInterface
|
||||
default:
|
||||
throw new FireflyException('No _periodName() for range "' . $range . '"');
|
||||
break;
|
||||
case '1D':
|
||||
return $date->format('jS F Y');
|
||||
break;
|
||||
case '1W':
|
||||
return 'week ' . $date->format('W, Y');
|
||||
break;
|
||||
case '1M':
|
||||
return $date->format('F Y');
|
||||
break;
|
||||
case '3M':
|
||||
$month = intval($date->format('m'));
|
||||
return 'Q' . ceil(($month / 12) * 4) . ' ' . $date->format('Y');
|
||||
break;
|
||||
case '6M':
|
||||
$month = intval($date->format('m'));
|
||||
$half = ceil(($month / 12) * 2);
|
||||
$halfName = $half == 1 ? 'first' : 'second';
|
||||
return $halfName . ' half of ' . $date->format('d-m-Y');
|
||||
break;
|
||||
case '1Y':
|
||||
return $date->format('Y');
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -231,12 +254,19 @@ class Toolkit implements ToolkitInterface
|
||||
$date->firstOfQuarter()->subMonths(3)->firstOfQuarter();
|
||||
break;
|
||||
case '6M':
|
||||
if (intval($date->format('m')) >= 7) {
|
||||
$date->startOfYear();
|
||||
} else {
|
||||
$month = intval($date->format('m'));
|
||||
if ($month <= 6) {
|
||||
$date->startOfYear()->subMonths(6);
|
||||
} else {
|
||||
$date->startOfYear();
|
||||
}
|
||||
break;
|
||||
case '1Y':
|
||||
$date->startOfYear()->subYear();
|
||||
break;
|
||||
default:
|
||||
throw new FireflyException('Cannot do _previous() on ' . $range);
|
||||
break;
|
||||
}
|
||||
return $date;
|
||||
}
|
||||
@ -254,7 +284,7 @@ class Toolkit implements ToolkitInterface
|
||||
$date->endOfMonth()->addDay()->startOfMonth();
|
||||
break;
|
||||
case '3M':
|
||||
$date->lastOfQuarter();
|
||||
$date->lastOfQuarter()->addDay();
|
||||
break;
|
||||
case '6M':
|
||||
if (intval($date->format('m')) >= 7) {
|
||||
@ -263,6 +293,12 @@ class Toolkit implements ToolkitInterface
|
||||
$date->startOfYear()->addMonths(6);
|
||||
}
|
||||
break;
|
||||
case '1Y':
|
||||
$date->startOfYear()->addYear();
|
||||
break;
|
||||
default:
|
||||
throw new FireflyException('Cannot do _next() on ' . $range);
|
||||
break;
|
||||
}
|
||||
return $date;
|
||||
}
|
||||
|
@ -133,6 +133,7 @@ Route::group(['before' => 'auth'], function () {
|
||||
// some date routes:
|
||||
Route::get('/prev',['uses' => 'HomeController@sessionPrev', 'as' => 'sessionPrev']);
|
||||
Route::get('/next',['uses' => 'HomeController@sessionNext', 'as' => 'sessionNext']);
|
||||
Route::get('/jump/{range}',['uses' => 'HomeController@rangeJump','as' => 'rangeJump']);
|
||||
|
||||
// account controller:
|
||||
Route::get('/accounts', ['uses' => 'AccountController@index', 'as' => 'accounts.index']);
|
||||
|
@ -2,6 +2,22 @@
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-clock-o fa-fw"></i>
|
||||
{{{\Session::get('period')}}}
|
||||
|
||||
<!-- ACTIONS MENU -->
|
||||
<div class="pull-right">
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown">
|
||||
Range
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu pull-right" role="menu">
|
||||
@foreach(Config::get('firefly.range_to_name') as $name => $label)
|
||||
<li><a href="{{route('rangeJump',$name)}}"><i class="fa fa-calendar fa-fw"></i> {{{ucfirst($label)}}}</a></li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="btn-group btn-group-sm btn-group-justified">
|
||||
|
Loading…
Reference in New Issue
Block a user