'1M', 'name' => '1 month', 'method' => 'subMonths', 'args' => [1]], ['id' => '3M', 'name' => '3 months', 'method' => 'subMonths', 'args' => [3]], ['id' => 'YTD', 'name' => 'Year to date', 'method' => 'startOfYear', 'args' => []], ['id' => '1Y', 'name' => '1 year', 'method' => 'subYears', 'args' => [1]], ['id' => '3Y', 'name' => '3 years', 'method' => 'subYears', 'args' => [3]], ['id' => 'ALL', 'name' => 'All time', 'method' => null] ]; // data public Array $chartSeries; // methods public function mount() { $this->chartSeries = $this->generatePerformanceData(); } public function generatePerformanceData() { $filterMethod = collect($this->scopeOptions)->where('id', $this->scope)->first(); $dailyChangeQuery = DailyChange::myDailyChanges(); if (isset($this->portfolio)) { $dailyChangeQuery->portfolio($this->portfolio->id); } else { $dailyChangeQuery->selectRaw(' date, SUM(total_market_value) as total_market_value, SUM(total_cost_basis) as total_cost_basis, SUM(total_gain) as total_gain /* , SUM(realized_gains) as realized_gains, SUM(total_dividends_earned) as total_dividends_earned */ ') ->groupBy('date') ->orderBy('date'); } if ($filterMethod['method']) { $dailyChangeQuery->whereDate('date', '>=', now()->{$filterMethod['method']}(...$filterMethod['args'])); } $dailyChange = $dailyChangeQuery->get(); return [ 'series' => [ [ 'name' => __('Market Value'), 'data' => $dailyChange->map(fn($data) => [$data->date, $data->total_market_value])->toArray(), ], [ 'name' => __('Cost Basis'), 'data' => $dailyChange->map(fn($data) => [$data->date, $data->total_cost_basis])->toArray(), ], [ 'name' => __('Market Gain'), 'data' => $dailyChange->map(fn($data) => [$data->date, $data->total_gain])->toArray() ], // [ // 'name' => __('Dividends Earned'), // 'data' => $dailyChange->map(fn($data) => [$data->date, $data->total_dividends_earned])->toArray() // ], // [ // 'name' => __('Realized Gains'), // 'data' => $dailyChange->map(fn($data) => [$data->date, $data->realized_gains])->toArray() // ], ] ]; } public function changeScope($scope) { $this->scope = $scope; $this->chartSeries = $this->generatePerformanceData(); } public function getScopeName($scope) { return collect($this->scopeOptions)->where('id', $scope)->first()['name']; } }; ?>

{{ __('Performance') }}

{{-- --}} @foreach($scopeOptions as $option) @endforeach