diff options
| -rw-r--r-- | app/Http/Controllers/AnimeController.php | 36 | ||||
| -rw-r--r-- | resources/views/anime.blade.php | 60 | ||||
| -rw-r--r-- | resources/views/layouts/app.blade.php | 1 | ||||
| -rw-r--r-- | routes/web.php | 1 |
4 files changed, 98 insertions, 0 deletions
diff --git a/app/Http/Controllers/AnimeController.php b/app/Http/Controllers/AnimeController.php new file mode 100644 index 0000000..d43b1f8 --- /dev/null +++ b/app/Http/Controllers/AnimeController.php @@ -0,0 +1,36 @@ +<?php + +namespace App\Http\Controllers; +use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Facades\DB; +use Illuminate\Http\Request; +use Illuminate\Http\Response; + +use App\Anime; +use App\AnimeStats; + +use Carbon\Carbon; + +class AnimeController extends Controller { + /** + * Shows the index page. + * + * @return Response + */ + public function showAnime($mal_id) { + + $anime = Anime::where('mal_id', $mal_id)->get()->first(); + $anime["stats"] = $anime->getStats()->orderBy('created_at', 'asc')->get(); + + foreach( $anime["stats"] as $stats ) { + $score[] = $stats->score; + $scored_at[] = $stats->created_at->toDateString(); + } + $anime["score"] = $score; + $anime["score_label"] = $scored_at; + + $anime["basic_data"] = DB::select('select score, rank, popularity, members, favorites from anime join stats on stats.id = ( select id from stats where anime.mal_id = stats.mal_id order by created_at desc limit 1) where anime.mal_id = ?', [$mal_id])[0]; + + return view('anime', [ "anime" => $anime ]); + } +} diff --git a/resources/views/anime.blade.php b/resources/views/anime.blade.php new file mode 100644 index 0000000..0e5596b --- /dev/null +++ b/resources/views/anime.blade.php @@ -0,0 +1,60 @@ +@extends('layouts.app') + +@section('content') +<div class="container" id="index"> + <h1>{{ $anime->title_pref }}</h1> + + <div class="row"> + <div class="col-sm"> + <img src="{{ $anime->image_url }}" class="img-fluid"> + </div> + <div class="col-sm"> + {!! str_replace("%%br%%", "<br>", e($anime->synopsis)) !!} + <br> + <br> + <strong>Score: </strong> {{ $anime["basic_data"]->score }} + <br> + <strong>Rank: </strong> {{ $anime["basic_data"]->rank }} + <br> + <strong>Popularity: </strong> {{ $anime["basic_data"]->popularity }} + <br> + <strong>Members: </strong> {{ $anime["basic_data"]->members }} + </div> + </div> + + <p> + <h2>Score History</h2> + <canvas id="score_chart" height=""></canvas> + <!-- + {{ $anime }} + --> + </p> +</div> +<script> +var ctx = document.getElementById('score_chart'); +var myChart = new Chart(ctx, { + type: 'line', + data: { + labels: {!! json_encode($anime["score_label"]) !!}, + datasets: [{ + label: 'Average Score on MAL', + data: {{ json_encode($anime["score"]) }}, + file: 'false', + borderColor: 'rgb(75, 192, 192)', + lineTension: 0.01, + backgroundColor: 'white', + }] + }, + options: { + scales: { + yAxes: [{ + ticks: { + beginAtZero: false + } + }] + } + } +}); + +</script> +@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 8d29582..4090062 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -12,6 +12,7 @@ <!-- Scripts --> <script src="{{ asset('js/app.js') }}" defer></script> + <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.min.js"></script> <!-- Fonts --> <link rel="dns-prefetch" href="//fonts.gstatic.com"> diff --git a/routes/web.php b/routes/web.php index cd25f4f..79ec91b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -19,3 +19,4 @@ Route::get('/save', 'IndexController@saveWatchingAnime'); Route::get('/test/getcal/{username}', 'TestController@getCalendar'); Route::get('/test/setcal/{username}', 'TestController@setCalendar'); Route::get('/api/anime/{mal_id}', 'ApiController@getAnime'); +Route::get('/anime/{mal_id}', 'AnimeController@showAnime'); |
