'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 placeholder() { return <<<'HTML'
HTML; } public function generatePerformanceData() { $filterMethod = collect($this->scopeOptions)->where('id', $this->scope)->first(); $dailyChangeQuery = DailyChange::withDailyPerformance(); if (isset($this->portfolio)) { // portfolio $dailyChangeQuery->portfolio($this->portfolio->id); } else { // dashboard $dailyChangeQuery->myDailyChanges()->withoutWishlists(); } if ($filterMethod['method']) { $dailyChangeQuery->whereDate('daily_change.date', '>=', now()->{$filterMethod['method']}(...$filterMethod['args'])); } $dailyChange = cache()->remember( 'graph-'.$this->scope.'-'.(isset($this->portfolio) ? $this->portfolio->id : request()->user()->id), 10, function () use ($dailyChangeQuery) { return $dailyChangeQuery->withMultipleDailyPerformance()->get(); } ); $marketValueData = []; $costBasisData = []; $marketGainData = []; foreach ($dailyChange as $data) { $date = $data->date; $marketValueData[] = [$date, round($data->total_market_value, 2)]; $costBasisData[] = [$date, round($data->total_cost_basis, 2)]; $marketGainData[] = [$date, round($data->total_market_gain, 2)]; // $dividendSeries[] = [$date, round($data->total_dividends_earned, 2)]; // $realizedGainSeries[] = [$date, round($data->realized_gains, 2)]; } return [ 'series' => [ [ 'name' => __('Market Value'), 'data' => $marketValueData, ], [ 'name' => __('Cost Basis'), 'data' => $costBasisData, ], [ 'name' => __('Market Gain'), 'data' => $marketGainData, ], // [ // 'name' => __('Dividends Earned'), // 'data' => $dividendSeries // ], // [ // 'name' => __('Realized Gains'), // 'data' => $realizedGainSeries // ], ], ]; } public function changeScope($scope) { $this->scope = $scope; cache()->forget('graph-'.$this->scope.'-'.(isset($this->portfolio) ? $this->portfolio->id : request()->user()->id)); $this->chartSeries = $this->generatePerformanceData(); } public function getScopeName($scope) { return collect($this->scopeOptions)->where('id', $scope)->first()['name']; } }; ?>

{{ __('Performance') }}

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