概況欄の時間表記が狂っていたため、フォーマットの担当をDBからPHPに移した
This commit is contained in:
parent
be2cf3328a
commit
12d06dc88b
13
app/Facades/Formatter.php
Normal file
13
app/Facades/Formatter.php
Normal file
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Facades;
|
||||
|
||||
use Illuminate\Support\Facades\Facade;
|
||||
|
||||
class Formatter extends Facade
|
||||
{
|
||||
protected static function getFacadeAccessor()
|
||||
{
|
||||
return \App\Utilities\Formatter::class;
|
||||
}
|
||||
}
|
@ -52,15 +52,15 @@ SQL
|
||||
// 概況欄のデータ取得
|
||||
$summary = DB::select(<<<'SQL'
|
||||
SELECT
|
||||
to_char(avg(span), 'FMDDD日 FMHH24時間 FMMI分') AS average,
|
||||
to_char(max(span), 'FMDDD日 FMHH24時間 FMMI分') AS longest,
|
||||
to_char(min(span), 'FMDDD日 FMHH24時間 FMMI分') AS shortest,
|
||||
to_char(sum(span), 'FMDDD日 FMHH24時間 FMMI分') AS total_times,
|
||||
avg(span) AS average,
|
||||
max(span) AS longest,
|
||||
min(span) AS shortest,
|
||||
sum(span) AS total_times,
|
||||
count(*) AS total_checkins
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
ejaculated_date - lead(ejaculated_date, 1, NULL) OVER (ORDER BY ejaculated_date DESC) AS span
|
||||
extract(epoch from ejaculated_date - lead(ejaculated_date, 1, NULL) OVER (ORDER BY ejaculated_date DESC)) AS span
|
||||
FROM
|
||||
ejaculations
|
||||
WHERE
|
||||
|
@ -48,15 +48,15 @@ SQL
|
||||
// 概況欄のデータ取得
|
||||
$summary = DB::select(<<<'SQL'
|
||||
SELECT
|
||||
to_char(avg(span), 'FMDDD日 FMHH24時間 FMMI分') AS average,
|
||||
to_char(max(span), 'FMDDD日 FMHH24時間 FMMI分') AS longest,
|
||||
to_char(min(span), 'FMDDD日 FMHH24時間 FMMI分') AS shortest,
|
||||
to_char(sum(span), 'FMDDD日 FMHH24時間 FMMI分') AS total_times,
|
||||
avg(span) AS average,
|
||||
max(span) AS longest,
|
||||
min(span) AS shortest,
|
||||
sum(span) AS total_times,
|
||||
count(*) AS total_checkins
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
ejaculated_date - lead(ejaculated_date, 1, NULL) OVER (ORDER BY ejaculated_date DESC) AS span
|
||||
extract(epoch from ejaculated_date - lead(ejaculated_date, 1, NULL) OVER (ORDER BY ejaculated_date DESC)) AS span
|
||||
FROM
|
||||
ejaculations
|
||||
WHERE
|
||||
|
31
app/Providers/FormatterServiceProvider.php
Normal file
31
app/Providers/FormatterServiceProvider.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Utilities\Formatter;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class FormatterServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Bootstrap the application services.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the application services.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$this->app->singleton(Formatter::class, function ($app) {
|
||||
return new Formatter();
|
||||
});
|
||||
}
|
||||
}
|
19
app/Utilities/Formatter.php
Normal file
19
app/Utilities/Formatter.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Utilities;
|
||||
|
||||
class Formatter
|
||||
{
|
||||
/**
|
||||
* 通算秒数を日数と時分にフォーマットします。
|
||||
* @param int|float $value 通算秒数
|
||||
* @return string "xx日 xx時間 xx分" 形式でフォーマットされた文字列
|
||||
*/
|
||||
public function formatInterval($value)
|
||||
{
|
||||
$days = floor($value / 86400);
|
||||
$hours = floor($value % 86400 / 3600);
|
||||
$minutes = floor($value % 3600 / 60);
|
||||
return "{$days}日 {$hours}時間 {$minutes}分";
|
||||
}
|
||||
}
|
@ -226,6 +226,7 @@ return [
|
||||
'Validator' => Illuminate\Support\Facades\Validator::class,
|
||||
'View' => Illuminate\Support\Facades\View::class,
|
||||
|
||||
'Formatter' => App\Facades\Formatter::class,
|
||||
],
|
||||
|
||||
];
|
||||
|
@ -31,10 +31,10 @@
|
||||
@if (isset($summary) && $summary[0]->total_checkins > 0)
|
||||
<hr>
|
||||
<p class="valign-wrapper"><i class="material-icons">assessment</i><b>概況</b></p>
|
||||
<p>平均記録: {{ $summary[0]->average }}</p>
|
||||
<p>最長記録: {{ $summary[0]->longest }}</p>
|
||||
<p>最短記録: {{ $summary[0]->shortest }}</p>
|
||||
<p>合計時間: {{ $summary[0]->total_times }}</p>
|
||||
<p>平均記録: {{ Formatter::formatInterval($summary[0]->average) }}</p>
|
||||
<p>最長記録: {{ Formatter::formatInterval($summary[0]->longest) }}</p>
|
||||
<p>最短記録: {{ Formatter::formatInterval($summary[0]->shortest) }}</p>
|
||||
<p>合計時間: {{ Formatter::formatInterval($summary[0]->total_times) }}</p>
|
||||
<p>通算回数: {{ $summary[0]->total_checkins }}回</p>
|
||||
@endif
|
||||
</div>
|
||||
|
@ -39,10 +39,10 @@
|
||||
@if (isset($summary) && $summary[0]->total_checkins > 0)
|
||||
<hr>
|
||||
<p class="valign-wrapper"><i class="material-icons">assessment</i><b>概況</b></p>
|
||||
<p>平均記録: {{ $summary[0]->average }}</p>
|
||||
<p>最長記録: {{ $summary[0]->longest }}</p>
|
||||
<p>最短記録: {{ $summary[0]->shortest }}</p>
|
||||
<p>合計時間: {{ $summary[0]->total_times }}</p>
|
||||
<p>平均記録: {{ Formatter::formatInterval($summary[0]->average) }}</p>
|
||||
<p>最長記録: {{ Formatter::formatInterval($summary[0]->longest) }}</p>
|
||||
<p>最短記録: {{ Formatter::formatInterval($summary[0]->shortest) }}</p>
|
||||
<p>合計時間: {{ Formatter::formatInterval($summary[0]->total_times) }}</p>
|
||||
<p>通算回数: {{ $summary[0]->total_checkins }}回</p>
|
||||
@endif
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user