getIdolDB()->idols); foreach($idolDB as $idol) { $colors[$idol->name->kanji->value] = $idol->color; } // dd($colors); return $colors; } public function statistics(Request $request) { $dataPoints = Rank::count(); return view('statistics',['data_points' => $dataPoints]); } public function home(Request $request) { $minutes = $request->since ?? 60*24*90; $timepoints = Cache::get('timepoints'); $requested_date = $request->date_since; if($requested_date) { $requested_date = Carbon::parse($requested_date); $timepoints = $timepoints->filter(function($item) use ($requested_date) { return $item->gte($requested_date); }); } else if($minutes != "full") $timepoints = $timepoints->filter(function($item) use ($minutes) { return $item->gte(Carbon::now()->addHours(9)->subMinutes($minutes+5)); }); $take = $timepoints->count(); $idolColors = $this->getIdolColors(); $dramaNames = Election::getDramaNames(); $ranks = Rank::all()->groupBy('role'); $charts = []; $timelabels = []; foreach($timepoints as $timepoint) { $timelabels[] = $timepoint->toDateTimeString(); } $timelabels = collect($timelabels); $timelabels = $timelabels->splice(count($timelabels) - $take); if($request->take) $timelabels = $timelabels->take($request->take); foreach($ranks as $roleName => $roleRank) { $chartPoint = Cache::get('data_'.$roleName); // dd($chartPoint); if(!isset($chartPoint)) { \App\MatsuriHime\Election::createSnapshot(); $chartPoint = Cache::get('data_'.$roleName); } $chart = new RankChart; $chart->options([ 'axisOptions' => [ 'xIsSeries' => true, 'xAxisMode' => 'tick' ], 'lineOptions' => [ 'regionFill' => true ], 'title' => $roleName.' ('.$dramaNames[$roleName].')' ]); $chart->isNavigable(true); $chart->labels($timelabels->toArray()); $chart->hideDots(true); foreach($chartPoint as $idol => $dataPoints) { $values = collect($dataPoints); $values = $values->splice(count($values) - $take); if($request->take) $values = $values->take($request->take); $idol_color = $idolColors[$idol]; $chart->dataSet($idol,'line',$values->toArray())->color($idol_color); } $chartData["drama"] = $dramaNames[$roleName]; $chartData["name"] = $roleName; $chartData["chart"] = $chart; $charts[] = $chartData; } return view('home', [ 'chart_groups' => collect($charts)->groupBy("drama"), 'since' => $request->since ]); } // }