Remember dashboard/report settings

This commit is contained in:
Hillel Coren 2017-03-23 15:09:51 +02:00
parent 2a4665dcff
commit f2ce5d622b
2 changed files with 63 additions and 16 deletions

View File

@ -18,11 +18,10 @@
@if (Auth::user()->hasPermission('view_all')) @if (Auth::user()->hasPermission('view_all'))
function loadChart(data) { function loadChart(data) {
var ctx = document.getElementById('chart-canvas').getContext('2d'); var ctx = document.getElementById('chart-canvas').getContext('2d');
if (window.myChart) { if (window.myChart) {
window.myChart.config.data = data; window.myChart.config.data = data;
window.myChart.config.options.scales.xAxes[0].time.unit = chartGropuBy.toLowerCase(); window.myChart.config.options.scales.xAxes[0].time.unit = chartGroupBy.toLowerCase();
window.myChart.config.options.scales.xAxes[0].time.round = chartGropuBy.toLowerCase(); window.myChart.config.options.scales.xAxes[0].time.round = chartGroupBy.toLowerCase();
window.myChart.update(); window.myChart.update();
} else { } else {
$('#progress-div').hide(); $('#progress-div').hide();
@ -63,8 +62,8 @@
xAxes: [{ xAxes: [{
type: 'time', type: 'time',
time: { time: {
unit: 'day', unit: chartGroupBy,
round: 'day', round: chartGroupBy,
}, },
gridLines: { gridLines: {
display: false, display: false,
@ -85,14 +84,38 @@
} }
var account = {!! $account !!}; var account = {!! $account !!};
var chartStartDate = moment().subtract(29, 'days'); var chartGroupBy = 'day';
var chartEndDate = moment();
var chartGropuBy = 'day';
var chartCurrencyId = {{ $account->getCurrencyId() }}; var chartCurrencyId = {{ $account->getCurrencyId() }};
var dateRanges = {!! $account->present()->dateRangeOptions !!};
var chartStartDate;
var chartEndDate;
$(function() { $(function() {
// Initialize date range selector // Initialize date range selector
chartStartDate = moment().subtract(29, 'days');
chartEndDate = moment();
if (isStorageSupported()) {
var lastRange = localStorage.getItem('last:dashboard_range');
lastRange = dateRanges[lastRange];
if (lastRange) {
chartStartDate = lastRange[0];
chartEndDate = lastRange[1];
}
var currencyId = localStorage.getItem('last:dashboard_currency_id');
if (currencyId) {
chartCurrencyId = currencyId;
$("#currency-btn-group [data-button=\"" + chartCurrencyId + "\"]").addClass("active").siblings().removeClass("active");
}
var groupBy = localStorage.getItem('last:dashboard_group_by');
if (groupBy) {
chartGroupBy = groupBy;
$("#group-btn-group [data-button=\"" + groupBy + "\"]").addClass("active").siblings().removeClass("active");
}
}
function cb(start, end, label) { function cb(start, end, label) {
$('#reportrange span').html(start.format('{{ $account->getMomentDateFormat() }}') + ' - ' + end.format('{{ $account->getMomentDateFormat() }}')); $('#reportrange span').html(start.format('{{ $account->getMomentDateFormat() }}') + ' - ' + end.format('{{ $account->getMomentDateFormat() }}'));
@ -100,6 +123,10 @@
chartEndDate = end; chartEndDate = end;
$('.range-label-div').text(label); $('.range-label-div').text(label);
loadData(); loadData();
if (isStorageSupported() && label && label != "{{ trans('texts.custom_range') }}") {
localStorage.setItem('last:dashboard_range', label);
}
} }
$('#reportrange').daterangepicker({ $('#reportrange').daterangepicker({
@ -110,7 +137,7 @@
startDate: chartStartDate, startDate: chartStartDate,
endDate: chartEndDate, endDate: chartEndDate,
linkedCalendars: false, linkedCalendars: false,
ranges: {!! $account->present()->dateRangeOptions !!} ranges: dateRanges,
}, cb); }, cb);
cb(chartStartDate, chartEndDate); cb(chartStartDate, chartEndDate);
@ -119,17 +146,23 @@
$(this).addClass("active").siblings().removeClass("active"); $(this).addClass("active").siblings().removeClass("active");
chartCurrencyId = currencyMap[$(this).text()].id; chartCurrencyId = currencyMap[$(this).text()].id;
loadData(); loadData();
if (isStorageSupported()) {
localStorage.setItem('last:dashboard_currency_id', $(this).attr('data-button'));
}
}); });
$("#group-btn-group > .btn").click(function(){ $("#group-btn-group > .btn").click(function(){
$(this).addClass("active").siblings().removeClass("active"); $(this).addClass("active").siblings().removeClass("active");
chartGropuBy = $(this).attr('data-button'); chartGroupBy = $(this).attr('data-button');
loadData(); loadData();
if (isStorageSupported()) {
localStorage.setItem('last:dashboard_group_by', chartGroupBy);
}
}); });
function loadData() { function loadData() {
var includeExpenses = "{{ count($expenses) ? 'true' : 'false' }}"; var includeExpenses = "{{ count($expenses) ? 'true' : 'false' }}";
var url = "{!! url('/dashboard_chart_data') !!}/" + chartGropuBy + '/' + chartStartDate.format('YYYY-MM-DD') + '/' + chartEndDate.format('YYYY-MM-DD') + '/' + chartCurrencyId + '/' + includeExpenses; var url = "{!! url('/dashboard_chart_data') !!}/" + chartGroupBy + '/' + chartStartDate.format('YYYY-MM-DD') + '/' + chartEndDate.format('YYYY-MM-DD') + '/' + chartCurrencyId + '/' + includeExpenses;
$.get(url, function(response) { $.get(url, function(response) {
response = JSON.parse(response); response = JSON.parse(response);
loadChart(response.data); loadChart(response.data);
@ -183,7 +216,7 @@
<div id="currency-btn-group" class="btn-group" role="group" style="border: 1px solid #ccc;"> <div id="currency-btn-group" class="btn-group" role="group" style="border: 1px solid #ccc;">
@foreach ($currencies as $key => $val) @foreach ($currencies as $key => $val)
<button type="button" class="btn btn-normal {{ array_values($currencies)[0] == $val ? 'active' : '' }}" <button type="button" class="btn btn-normal {{ array_values($currencies)[0] == $val ? 'active' : '' }}"
style="font-weight:normal !important;background-color:white">{{ $val }}</button> data-button="{{ $key }}" style="font-weight:normal !important;background-color:white">{{ $val }}</button>
@endforeach @endforeach
</div> </div>
@endif @endif

View File

@ -31,16 +31,30 @@
<script type="text/javascript"> <script type="text/javascript">
var chartStartDate = moment("{{ $startDate }}");
var chartEndDate = moment("{{ $endDate }}");
var dateRanges = {!! $account->present()->dateRangeOptions !!};
$(function() { $(function() {
var chartStartDate = moment("{{ $startDate }}"); if (isStorageSupported()) {
var chartEndDate = moment("{{ $endDate }}"); var lastRange = localStorage.getItem('last:report_range');
lastRange = dateRanges[lastRange];
if (lastRange) {
chartStartDate = lastRange[0];
chartEndDate = lastRange[1];
}
}
// Initialize date range selector // Initialize date range selector
function cb(start, end) { function cb(start, end, label) {
$('#reportrange span').html(start.format('{{ $account->getMomentDateFormat() }}') + ' - ' + end.format('{{ $account->getMomentDateFormat() }}')); $('#reportrange span').html(start.format('{{ $account->getMomentDateFormat() }}') + ' - ' + end.format('{{ $account->getMomentDateFormat() }}'));
$('#start_date').val(start.format('YYYY-MM-DD')); $('#start_date').val(start.format('YYYY-MM-DD'));
$('#end_date').val(end.format('YYYY-MM-DD')); $('#end_date').val(end.format('YYYY-MM-DD'));
if (isStorageSupported() && label && label != "{{ trans('texts.custom_range') }}") {
localStorage.setItem('last:report_range', label);
}
} }
$('#reportrange').daterangepicker({ $('#reportrange').daterangepicker({
@ -51,7 +65,7 @@
startDate: chartStartDate, startDate: chartStartDate,
endDate: chartEndDate, endDate: chartEndDate,
linkedCalendars: false, linkedCalendars: false,
ranges: {!! $account->present()->dateRangeOptions !!} ranges: dateRanges,
}, cb); }, cb);
cb(chartStartDate, chartEndDate); cb(chartStartDate, chartEndDate);