Adding charts to reports

This commit is contained in:
Hillel Coren 2018-02-27 22:52:57 +02:00
parent 9d8f2f1ebf
commit 339c7f920b
6 changed files with 111 additions and 6 deletions

View File

@ -137,4 +137,71 @@ class Activity extends Eloquent
return trans("texts.activity_{$activityTypeId}", $data); return trans("texts.activity_{$activityTypeId}", $data);
} }
public function relatedEntityType()
{
switch ($this->activity_type_id) {
case ACTIVITY_TYPE_CREATE_CLIENT:
case ACTIVITY_TYPE_ARCHIVE_CLIENT:
case ACTIVITY_TYPE_DELETE_CLIENT:
case ACTIVITY_TYPE_RESTORE_CLIENT:
case ACTIVITY_TYPE_CREATE_CREDIT:
case ACTIVITY_TYPE_ARCHIVE_CREDIT:
case ACTIVITY_TYPE_DELETE_CREDIT:
case ACTIVITY_TYPE_RESTORE_CREDIT:
return ENTITY_CLIENT;
break;
case ACTIVITY_TYPE_CREATE_INVOICE:
case ACTIVITY_TYPE_UPDATE_INVOICE:
case ACTIVITY_TYPE_EMAIL_INVOICE:
case ACTIVITY_TYPE_VIEW_INVOICE:
case ACTIVITY_TYPE_ARCHIVE_INVOICE:
case ACTIVITY_TYPE_DELETE_INVOICE:
case ACTIVITY_TYPE_RESTORE_INVOICE:
return ENTITY_INVOICE;
break;
case ACTIVITY_TYPE_CREATE_PAYMENT:
case ACTIVITY_TYPE_ARCHIVE_PAYMENT:
case ACTIVITY_TYPE_DELETE_PAYMENT:
case ACTIVITY_TYPE_RESTORE_PAYMENT:
case ACTIVITY_TYPE_VOIDED_PAYMENT:
case ACTIVITY_TYPE_REFUNDED_PAYMENT:
case ACTIVITY_TYPE_FAILED_PAYMENT:
return ENTITY_PAYMENT;
break;
case ACTIVITY_TYPE_CREATE_QUOTE:
case ACTIVITY_TYPE_UPDATE_QUOTE:
case ACTIVITY_TYPE_EMAIL_QUOTE:
case ACTIVITY_TYPE_VIEW_QUOTE:
case ACTIVITY_TYPE_ARCHIVE_QUOTE:
case ACTIVITY_TYPE_DELETE_QUOTE:
case ACTIVITY_TYPE_RESTORE_QUOTE:
case ACTIVITY_TYPE_APPROVE_QUOTE:
return ENTITY_QUOTE;
break;
case ACTIVITY_TYPE_CREATE_VENDOR:
case ACTIVITY_TYPE_ARCHIVE_VENDOR:
case ACTIVITY_TYPE_DELETE_VENDOR:
case ACTIVITY_TYPE_RESTORE_VENDOR:
case ACTIVITY_TYPE_CREATE_EXPENSE:
case ACTIVITY_TYPE_ARCHIVE_EXPENSE:
case ACTIVITY_TYPE_DELETE_EXPENSE:
case ACTIVITY_TYPE_RESTORE_EXPENSE:
case ACTIVITY_TYPE_UPDATE_EXPENSE:
return ENTITY_EXPENSE;
break;
case ACTIVITY_TYPE_CREATE_TASK:
case ACTIVITY_TYPE_UPDATE_TASK:
case ACTIVITY_TYPE_ARCHIVE_TASK:
case ACTIVITY_TYPE_DELETE_TASK:
case ACTIVITY_TYPE_RESTORE_TASK:
return ENTITY_TASK;
break;
}
}
} }

View File

@ -146,6 +146,21 @@ class AbstractReport
return join('', $reportParts); return join('', $reportParts);
} }
protected function getDimension($entity)
{
$subgroup = $this->options['subgroup'];
if ($subgroup == 'user') {
return $entity->user->getDisplayName();
} elseif ($subgroup == 'client') {
if ($entity->client) {
return $entity->client->getDisplayName();
} else {
return trans('texts.unset');
}
}
}
protected function addChartData($dimension, $date, $amount) protected function addChartData($dimension, $date, $amount)
{ {
if (! isset($this->chartData[$dimension])) { if (! isset($this->chartData[$dimension])) {

View File

@ -23,6 +23,7 @@ class ActivityReport extends AbstractReport
$startDate = $this->startDate;; $startDate = $this->startDate;;
$endDate = $this->endDate; $endDate = $this->endDate;
$subgroup = $this->options['subgroup'];
$activities = Activity::scope() $activities = Activity::scope()
->with('client.contacts', 'user', 'invoice', 'payment', 'credit', 'task', 'expense', 'account') ->with('client.contacts', 'user', 'invoice', 'payment', 'credit', 'task', 'expense', 'account')
@ -38,7 +39,13 @@ class ActivityReport extends AbstractReport
$this->isExport ? strip_tags($activity->getMessage()) : $activity->getMessage(), $this->isExport ? strip_tags($activity->getMessage()) : $activity->getMessage(),
]; ];
$this->addChartData(ENTITY_ACTIVITY, $activity->created_at, 1); if ($subgroup == 'category') {
$dimension = trans('texts.' . $activity->relatedEntityType());
} else {
$dimension = $this->getDimension($activity);
}
$this->addChartData($dimension, $activity->created_at, 1);
} }
//dd($this->getChartData()); //dd($this->getChartData());

View File

@ -2766,6 +2766,7 @@ $LANG = array(
'webmail' => 'Webmail', 'webmail' => 'Webmail',
'group' => 'Group', 'group' => 'Group',
'subgroup' => 'Subgroup', 'subgroup' => 'Subgroup',
'unset' => 'Unset',
); );

View File

@ -105,7 +105,6 @@ function loadPieChart(data) {
$(function() { $(function() {
var lineChartData = {!! json_encode($report->getLineChartData()) !!}; var lineChartData = {!! json_encode($report->getLineChartData()) !!};
loadLineChart(lineChartData); loadLineChart(lineChartData);
//console.log(chartData);
var pieChartData = {!! json_encode($report->getPieChartData()) !!}; var pieChartData = {!! json_encode($report->getPieChartData()) !!};
if (pieChartData) { if (pieChartData) {

View File

@ -471,14 +471,13 @@
$subgroup.append(new Option("{{ trans('texts.user') }}", 'user')); $subgroup.append(new Option("{{ trans('texts.user') }}", 'user'));
if (['activity', 'expense'].indexOf(reportType) >= 0) { if (reportType == 'activity') {
$subgroup.append(new Option("{{ trans('texts.category') }}", 'category')); $subgroup.append(new Option("{{ trans('texts.category') }}", 'category'));
} } else if (reportType == 'aging') {
if (reportType == 'aging') {
$subgroup.append(new Option("{{ trans('texts.age') }}", 'age')); $subgroup.append(new Option("{{ trans('texts.age') }}", 'age'));
} else if (reportType == 'expense') { } else if (reportType == 'expense') {
$subgroup.append(new Option("{{ trans('texts.vendor') }}", 'vendor')); $subgroup.append(new Option("{{ trans('texts.vendor') }}", 'vendor'));
$subgroup.append(new Option("{{ trans('texts.category') }}", 'category'));
} else if (reportType == 'payment') { } else if (reportType == 'payment') {
$subgroup.append(new Option("{{ trans('texts.method') }}", 'method')); $subgroup.append(new Option("{{ trans('texts.method') }}", 'method'));
} else if (reportType == 'profit_and_loss') { } else if (reportType == 'profit_and_loss') {
@ -486,6 +485,13 @@
} else if (reportType == 'task') { } else if (reportType == 'task') {
$subgroup.append(new Option("{{ trans('texts.project') }}", 'project')); $subgroup.append(new Option("{{ trans('texts.project') }}", 'project'));
} }
if (isStorageSupported()) {
var lastSubgroup = localStorage.getItem('last:report_subgroup');
if (lastSubgroup) {
$('#subgroup').val(lastSubgroup);
}
}
} }
var sumColumns = []; var sumColumns = [];
@ -542,6 +548,12 @@
} }
}); });
$('#subgroup').change(function() {
if (isStorageSupported()) {
localStorage.setItem('last:report_subgroup', $('#subgroup').val());
}
});
// parse 1,000.00 or 1.000,00 // parse 1,000.00 or 1.000,00
function convertStringToNumber(str) { function convertStringToNumber(str) {
str = str + '' || ''; str = str + '' || '';
@ -643,6 +655,10 @@
if (lastGroup) { if (lastGroup) {
$('#group').val(lastGroup); $('#group').val(lastGroup);
} }
var lastSubgroup = localStorage.getItem('last:report_subgroup');
if (lastSubgroup) {
$('#subgroup').val(lastSubgroup);
}
var lastDocumentFilter = localStorage.getItem('last:document_filter'); var lastDocumentFilter = localStorage.getItem('last:document_filter');
if (lastDocumentFilter) { if (lastDocumentFilter) {
$('#document_filter').val(lastDocumentFilter); $('#document_filter').val(lastDocumentFilter);