Working on charts

This commit is contained in:
Hillel Coren 2018-02-27 22:20:27 +02:00
parent e94e7cca80
commit 9d8f2f1ebf
5 changed files with 76 additions and 17 deletions

View File

@ -103,7 +103,8 @@ class ReportController extends BaseController
$config = [ $config = [
'date_field' => $dateField, 'date_field' => $dateField,
'status_ids' => request()->status_ids, 'status_ids' => request()->status_ids,
'group_dates_by' => request()->group_dates_by, 'group' => request()->group,
'subgroup' => request()->subgroup,
'document_filter' => request()->document_filter, 'document_filter' => request()->document_filter,
'currency_type' => request()->currency_type, 'currency_type' => request()->currency_type,
'export_format' => $format, 'export_format' => $format,
@ -154,7 +155,8 @@ class ReportController extends BaseController
unset($options['start_date']); unset($options['start_date']);
unset($options['end_date']); unset($options['end_date']);
unset($options['group_dates_by']); unset($options['group']);
unset($options['subgroup']);
$schedule = ScheduledReport::createNew(); $schedule = ScheduledReport::createNew();
$schedule->config = json_encode($options); $schedule->config = json_encode($options);

View File

@ -73,7 +73,7 @@ class AbstractReport
} }
if (strpos($field, 'date') !== false) { if (strpos($field, 'date') !== false) {
$class[] = 'group-date-' . (isset($this->options['group_dates_by']) ? $this->options['group_dates_by'] : 'monthyear'); $class[] = 'group-date-' . (isset($this->options['group']) ? $this->options['group'] : 'monthyear');
} elseif (in_array($field, ['client', 'vendor', 'product', 'user', 'method', 'category', 'project'])) { } elseif (in_array($field, ['client', 'vendor', 'product', 'user', 'method', 'category', 'project'])) {
$class[] = 'group-letter-100'; $class[] = 'group-letter-100';
} elseif (in_array($field, ['amount', 'paid', 'balance'])) { } elseif (in_array($field, ['amount', 'paid', 'balance'])) {
@ -163,7 +163,7 @@ class AbstractReport
public function chartGroupBy() public function chartGroupBy()
{ {
$groupBy = empty($this->options['group_dates_by']) ? 'day' : $this->options['group_dates_by']; $groupBy = empty($this->options['group']) ? 'day' : $this->options['group'];
if ($groupBy == 'monthyear') { if ($groupBy == 'monthyear') {
$groupBy = 'month'; $groupBy = 'month';
@ -247,8 +247,22 @@ class AbstractReport
return $data; return $data;
} }
public function isLineChartEnabled()
{
return $this->options['group'];
}
public function isPieChartEnabled()
{
return $this->options['subgroup'];
}
public function getPieChartData() public function getPieChartData()
{ {
if (! $this->isPieChartEnabled()) {
return false;
}
$datasets = []; $datasets = [];
$labels = []; $labels = [];
$totals = []; $totals = [];

View File

@ -2764,6 +2764,8 @@ $LANG = array(
'mobile' => 'Mobile', 'mobile' => 'Mobile',
'desktop' => 'Desktop', 'desktop' => 'Desktop',
'webmail' => 'Webmail', 'webmail' => 'Webmail',
'group' => 'Group',
'subgroup' => 'Subgroup',
); );

View File

@ -101,25 +101,30 @@ function loadPieChart(data) {
} }
@if ($report->isLineChartEnabled())
$(function() { $(function() {
var lineChartData = {!! json_encode($report->getLineChartData()) !!}; var lineChartData = {!! json_encode($report->getLineChartData()) !!};
loadLineChart(lineChartData); loadLineChart(lineChartData);
//console.log(chartData); //console.log(chartData);
var pieChartData = {!! json_encode($report->getPieChartData()) !!}; var pieChartData = {!! json_encode($report->getPieChartData()) !!};
loadPieChart(pieChartData); if (pieChartData) {
console.log(pieChartData); loadPieChart(pieChartData);
}
}); });
@endif
</script> </script>
@if ($report->isLineChartEnabled())
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-{{ $report->isPieChartEnabled() ? 6 : 12 }}">
<canvas id="lineChartCanvas" style="background-color:white; padding:20px; width:100%; height: 250px;"></canvas> <canvas id="lineChartCanvas" style="background-color:white; padding:20px; width:100%; height: 250px;"></canvas>
</div> </div>
<div class="col-md-6"> <div class="col-md-6" style="display:{{ $report->isPieChartEnabled() ? 'block' : 'none' }}">
<canvas id="pieChartCanvas" style="background-color:white; padding:20px; width:100%; height: 250px;"></canvas> <canvas id="pieChartCanvas" style="background-color:white; padding:20px; width:100%; height: 250px;"></canvas>
</div> </div>
</div> </div>
<p>&nbsp;</p> <p>&nbsp;</p>
@endif

View File

@ -170,13 +170,15 @@
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
{!! Former::select('group_dates_by') {!! Former::select('group')
->label('group_when_sorted') ->addOption('', '')
->addOption(trans('texts.disabled'), '')
->addOption(trans('texts.day'), 'day') ->addOption(trans('texts.day'), 'day')
->addOption(trans('texts.month'), 'monthyear') ->addOption(trans('texts.month'), 'monthyear')
->addOption(trans('texts.year'), 'year') !!} ->addOption(trans('texts.year'), 'year') !!}
{!! Former::select('subgroup')
->addOption('', '') !!}
<div id="statusField" style="display:none"> <div id="statusField" style="display:none">
<div class="form-group"> <div class="form-group">
@ -456,6 +458,36 @@
$('#cancelSchduleButton').toggle(!! scheduledReportMap[reportType]); $('#cancelSchduleButton').toggle(!! scheduledReportMap[reportType]);
} }
function setSubgroupOptions() {
var reportType = $('#report_type').val();
var $subgroup = $('#subgroup');
$subgroup.find('option').remove().end();
$subgroup.append(new Option('', ''));
if (['client'].indexOf(reportType) == -1) {
$subgroup.append(new Option("{{ trans('texts.client') }}", 'client'));
}
$subgroup.append(new Option("{{ trans('texts.user') }}", 'user'));
if (['activity', 'expense'].indexOf(reportType) >= 0) {
$subgroup.append(new Option("{{ trans('texts.category') }}", 'category'));
}
if (reportType == 'aging') {
$subgroup.append(new Option("{{ trans('texts.age') }}", 'age'));
} else if (reportType == 'expense') {
$subgroup.append(new Option("{{ trans('texts.vendor') }}", 'vendor'));
} else if (reportType == 'payment') {
$subgroup.append(new Option("{{ trans('texts.method') }}", 'method'));
} else if (reportType == 'profit_and_loss') {
$subgroup.append(new Option("{{ trans('texts.type') }}", 'type'));
} else if (reportType == 'task') {
$subgroup.append(new Option("{{ trans('texts.project') }}", 'project'));
}
}
var sumColumns = []; var sumColumns = [];
@foreach ($columns as $column => $class) @foreach ($columns as $column => $class)
sumColumns.push("{{ in_array($column, ['amount', 'paid', 'balance', 'cost', 'duration', 'tax', 'qty']) ? trans("texts.{$column}") : false }}"); sumColumns.push("{{ in_array($column, ['amount', 'paid', 'balance', 'cost', 'duration', 'tax', 'qty']) ? trans("texts.{$column}") : false }}");
@ -491,19 +523,22 @@
@if (! auth()->user()->hasFeature(FEATURE_REPORTS)) @if (! auth()->user()->hasFeature(FEATURE_REPORTS))
return; return;
@endif @endif
var val = $('#report_type').val(); var val = $('#report_type').val();
setFiltersShown(); setFiltersShown();
setDocumentZipShown(); setDocumentZipShown();
setScheduleButton(); setScheduleButton();
setSubgroupOptions();
$('#scheduleButton').prop('disabled', $('#format').val() == 'zip'); $('#scheduleButton').prop('disabled', $('#format').val() == 'zip');
if (isStorageSupported()) { if (isStorageSupported()) {
localStorage.setItem('last:report_type', val); localStorage.setItem('last:report_type', val);
} }
}); });
$('#group_dates_by').change(function() { $('#group').change(function() {
if (isStorageSupported()) { if (isStorageSupported()) {
localStorage.setItem('last:report_group', $('#group_dates_by').val()); localStorage.setItem('last:report_group', $('#group').val());
} }
}); });
@ -537,11 +572,11 @@
}).maximizeSelect2Height(); }).maximizeSelect2Height();
$(".tablesorter-data").tablesorter({ $(".tablesorter-data").tablesorter({
@if (! request()->group_dates_by) @if (! request()->group)
sortList: [[0,0]], sortList: [[0,0]],
@endif @endif
theme: 'bootstrap', theme: 'bootstrap',
widgets: ['zebra', 'uitheme', 'filter'{!! request()->group_dates_by ? ", 'group'" : "" !!}, 'columnSelector'], widgets: ['zebra', 'uitheme', 'filter'{!! request()->group ? ", 'group'" : "" !!}, 'columnSelector'],
headerTemplate : '{content} {icon}', headerTemplate : '{content} {icon}',
@if ($report) @if ($report)
dateFormat: '{{ $report->convertDateFormat() }}', dateFormat: '{{ $report->convertDateFormat() }}',
@ -596,6 +631,7 @@
setFiltersShown(); setFiltersShown();
setDocumentZipShown(); setDocumentZipShown();
setScheduleButton(); setScheduleButton();
setSubgroupOptions();
}, 1); }, 1);
if (isStorageSupported()) { if (isStorageSupported()) {
@ -604,8 +640,8 @@
$('#report_type').val(lastReportType); $('#report_type').val(lastReportType);
} }
var lastGroup = localStorage.getItem('last:report_group'); var lastGroup = localStorage.getItem('last:report_group');
if (group_dates_by) { if (lastGroup) {
$('#group_dates_by').val(lastGroup); $('#group').val(lastGroup);
} }
var lastDocumentFilter = localStorage.getItem('last:document_filter'); var lastDocumentFilter = localStorage.getItem('last:document_filter');
if (lastDocumentFilter) { if (lastDocumentFilter) {