Allow setting of decimal places for metric points. Closes #823
This commit is contained in:
@@ -38,6 +38,7 @@ class Metric extends Model implements HasPresenter
|
||||
'display_chart' => 1,
|
||||
'default_value' => 0,
|
||||
'calc_type' => 0,
|
||||
'places' => 2,
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -50,6 +51,7 @@ class Metric extends Model implements HasPresenter
|
||||
'suffix' => 'required',
|
||||
'display_chart' => 'boolean',
|
||||
'default_value' => 'numeric',
|
||||
'places' => 'numeric|min:0|max:4',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -57,7 +59,15 @@ class Metric extends Model implements HasPresenter
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
protected $fillable = ['name', 'suffix', 'description', 'display_chart', 'default_value', 'calc_type'];
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'suffix',
|
||||
'description',
|
||||
'display_chart',
|
||||
'default_value',
|
||||
'calc_type',
|
||||
'places',
|
||||
];
|
||||
|
||||
/**
|
||||
* The relations to eager load on every query.
|
||||
@@ -92,11 +102,11 @@ class Metric extends Model implements HasPresenter
|
||||
|
||||
if (Config::get('database.default') === 'mysql') {
|
||||
if (!isset($this->calc_type) || $this->calc_type == self::CALC_SUM) {
|
||||
$value = (int) $this->points()
|
||||
$value = $this->points()
|
||||
->whereRaw('DATE_FORMAT(created_at, "%Y%m%d%H") = '.$hourInterval)
|
||||
->groupBy(DB::raw('HOUR(created_at)'))->sum('value');
|
||||
} elseif ($this->calc_type == self::CALC_AVG) {
|
||||
$value = (int) $this->points()
|
||||
$value = $this->points()
|
||||
->whereRaw('DATE_FORMAT(created_at, "%Y%m%d%H") = '.$hourInterval)
|
||||
->groupBy(DB::raw('HOUR(created_at)'))->avg('value');
|
||||
}
|
||||
@@ -125,7 +135,7 @@ class Metric extends Model implements HasPresenter
|
||||
return $this->default_value;
|
||||
}
|
||||
|
||||
return $value;
|
||||
return round($value, $this->places);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user