[], 'datasets' => [ [ 'label' => 'Amount', 'data' => [], ], ], ]; /** @var array $entry */ foreach ($entries as $entry) { $data['labels'][] = $entry[0]->formatLocalized($format); $data['datasets'][0]['data'][] = $entry[1]; } $data['count'] = count($data['datasets']); return $data; } /** * @param Collection $entries * * @return array */ public function frontpage(Collection $entries): array { $data = [ 'count' => 0, 'labels' => [], 'datasets' => [], ]; $left = []; $spent = []; $overspent = []; $filtered = $entries->filter( function ($entry) { return ($entry[1] != 0 || $entry[2] != 0 || $entry[3] != 0); } ); foreach ($filtered as $entry) { $data['labels'][] = $entry[0]; $left[] = round($entry[1], 2); $spent[] = round(bcmul($entry[2], '-1'), 2); // spent is coming in negative, must be positive $overspent[] = round(bcmul($entry[3], '-1'), 2); // same } $data['datasets'][] = [ 'label' => trans('firefly.overspent'), 'data' => $overspent, ]; $data['datasets'][] = [ 'label' => trans('firefly.left'), 'data' => $left, ]; $data['datasets'][] = [ 'label' => trans('firefly.spent'), 'data' => $spent, ]; $data['count'] = 3; return $data; } /** * @param array $entries * * @return array */ public function period(array $entries) : array { $data = [ 'labels' => array_keys($entries), 'datasets' => [ 0 => [ 'label' => trans('firefly.budgeted'), 'data' => [], ], 1 => [ 'label' => trans('firefly.spent'), 'data' => [], ], ], 'count' => 2, ]; foreach ($entries as $label => $entry) { // data set 0 is budgeted // data set 1 is spent: $data['datasets'][0]['data'][] = $entry['budgeted']; $data['datasets'][1]['data'][] = round(($entry['spent'] * -1), 2); } return $data; } /** * @param Collection $budgets * @param Collection $entries * * @return array */ public function year(Collection $budgets, Collection $entries): array { // language: $format = (string)trans('config.month'); $data = [ 'labels' => [], 'datasets' => [], ]; foreach ($budgets as $budget) { $data['labels'][] = $budget->name; } // also add "no budget" $data['labels'][] = strval(trans('firefly.no_budget')); /** @var array $entry */ foreach ($entries as $entry) { $array = [ 'label' => $entry[0]->formatLocalized($format), 'data' => [], ]; array_shift($entry); $array['data'] = $entry; $data['datasets'][] = $array; } $data['count'] = count($data['datasets']); return $data; } }