/**
  * Returns a single graph line for a given property and station over the
  * past 24 hours.
  */
 public function showGraphJson(Request $request)
 {
     $property = $request->input('property');
     $station = Station::find($request->input('station'));
     $interval = $request->input('interval', 1);
     $measurements = $station->measurements()->where('time', '>', Carbon::now()->subDay())->orderBy('time', 'asc')->select(['time', $property])->get();
     return $measurements->map(function ($model) use($property, $interval) {
         $time = Carbon::parse($model->time)->timestamp;
         return [$time, (double) $model->{$property}, (int) floor($time / (int) $interval)];
     })->groupBy(2)->map(function ($list) {
         return [floor($list->average(0)), $list->average(1)];
     })->values();
 }
 public function showMeasurements($id)
 {
     $measurements = Station::find($id)->measurements();
     return view('measurement.overview', ['measurements' => $measurements->paginate(30)]);
 }
 /**
  * Displays information per station of the last
  * 24 hours.
  */
 public function showPerStation(Request $request)
 {
     $station = Station::find($request->input('station'));
     return ['station' => $station, 'measurements' => $station->measurements()->where('time', '>=', Carbon::now()->subDay())->get()];
 }