diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php index a92648b398..b01e4fcbaa 100644 --- a/app/Http/Controllers/ReportController.php +++ b/app/Http/Controllers/ReportController.php @@ -23,6 +23,7 @@ use FireflyIII\Models\Transaction; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use Illuminate\Support\Collection; use Preferences; +use Response; use Session; use Steam; use View; @@ -85,6 +86,23 @@ class ReportController extends Controller return view('reports.index', compact('months', 'accounts', 'start', 'accountList', 'customFiscalYear')); } + /** + * @param string $reportType + * + * @return mixed + */ + public function options(string $reportType) + { + $result = false; + switch ($reportType) { + default: + $result = $this->noReportOptions(); + break; + } + + return Response::json($result); + } + /** * @param string $reportType * @param Carbon $start @@ -292,4 +310,12 @@ class ReportController extends Controller ) ); } + + /** + * @return array + */ + private function noReportOptions(): array + { + return ['html' => view('reports.options.no-options')->render()]; + } } diff --git a/public/js/ff/reports/index.js b/public/js/ff/reports/index.js index 8abb613f25..6edeccac2a 100644 --- a/public/js/ff/reports/index.js +++ b/public/js/ff/reports/index.js @@ -44,9 +44,24 @@ $(function () { $('.date-select').on('click', preSelectDate); $('#report-form').on('submit', catchSubmit); + $('select[name="report_type"]').on('change', getReportOptions); + getReportOptions(); }); +function getReportOptions() { + "use strict"; + var reportType = $('select[name="report_type"]').val(); + $('#extra-options').empty(); + $('#extra-options').addClass('loading'); + console.log('Changed report type to ' + reportType); + $.getJSON('reports/options/' + reportType, function(data) { + $('#extra-options').removeClass('loading').html(data.html); + }).fail(function(){ + $('#extra-options').removeClass('loading').addClass('error'); + }); +} + function catchSubmit() { "use strict"; // default;20141201;20141231;4;5 diff --git a/resources/views/reports/index.twig b/resources/views/reports/index.twig index 0531cd5775..03ded3a6ab 100644 --- a/resources/views/reports/index.twig +++ b/resources/views/reports/index.twig @@ -26,6 +26,7 @@ @@ -86,10 +87,7 @@

{{ 'reports_extra_options'|_ }}

-
-

- {{ 'report_has_no_extra_options'|_ }} -

+
diff --git a/resources/views/reports/options/no-options.twig b/resources/views/reports/options/no-options.twig new file mode 100644 index 0000000000..c5fbcb501f --- /dev/null +++ b/resources/views/reports/options/no-options.twig @@ -0,0 +1,3 @@ +

+ {{ 'report_has_no_extra_options'|_ }} +

\ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 32cda245ba..f4d9dcbd7e 100755 --- a/routes/web.php +++ b/routes/web.php @@ -308,6 +308,7 @@ Route::group( */ Route::get('/reports', ['uses' => 'ReportController@index', 'as' => 'reports.index']); Route::get('/reports/report/{reportType}/{start_date}/{end_date}/{accountList}', ['uses' => 'ReportController@report', 'as' => 'reports.report']); + Route::get('/reports/options/{reportType}', ['uses' => 'ReportController@options', 'as' => 'reports.options']); /** * Report AJAX data Controller: