mirror of https://github.com/kcal-app/kcal.git
Add remaining fields for Goal edit form
This commit is contained in:
parent
15762790a5
commit
3ae6c6ef13
|
|
@ -2,11 +2,10 @@
|
|||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Support\Nutrients;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
/**
|
||||
* App\Models\Goal
|
||||
|
|
@ -57,7 +56,7 @@ final class Goal extends Model
|
|||
'name',
|
||||
'from',
|
||||
'to',
|
||||
// Bitwise field: sun=1, mon=2, tue=4, wed=8, thu=16, fri=32, sat=64.
|
||||
// Bitwise field: mon=1, tue=2, wed=4, thu=8, fri=16, sat=32, sun=64.
|
||||
'days',
|
||||
'calories',
|
||||
'carbohydrates',
|
||||
|
|
@ -82,6 +81,47 @@ final class Goal extends Model
|
|||
'sodium' => 'float',
|
||||
];
|
||||
|
||||
/**
|
||||
* Get all supported days and metadata.
|
||||
*
|
||||
* Each entry has the following keys:
|
||||
* - value: Day value (used for bitwise operations).
|
||||
* - label: Human-readable name for the day.
|
||||
*/
|
||||
public static function days(): Collection
|
||||
{
|
||||
return new Collection([
|
||||
[
|
||||
'value' => 1,
|
||||
'label' => 'monday',
|
||||
],
|
||||
[
|
||||
'value' => 2,
|
||||
'label' => 'tuesday',
|
||||
],
|
||||
[
|
||||
'value' => 4,
|
||||
'label' => 'wednesday',
|
||||
],
|
||||
[
|
||||
'value' => 8,
|
||||
'label' => 'thursday',
|
||||
],
|
||||
[
|
||||
'value' => 16,
|
||||
'label' => 'friday',
|
||||
],
|
||||
[
|
||||
'value' => 32,
|
||||
'label' => 'saturday',
|
||||
],
|
||||
[
|
||||
'value' => 64,
|
||||
'label' => 'sunday',
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the User this goal belongs to.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -13,13 +13,11 @@ class Nutrients
|
|||
/**
|
||||
* Get all supported units and metadata.
|
||||
*
|
||||
* Each entry has two keys:
|
||||
* Each entry has the following keys:
|
||||
* - value: Machine name for the unit.
|
||||
* - label: Human-readable name for the unit.
|
||||
* - plural: Human-readable plural form of the unit name.
|
||||
* - type: Unit type -- matching types can be converted.
|
||||
*
|
||||
* @return \Illuminate\Support\Collection
|
||||
*/
|
||||
public static function units(): Collection {
|
||||
return new Collection([
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -41,17 +41,34 @@
|
|||
:hasError="$errors->has('to')" />
|
||||
</div>
|
||||
|
||||
<!-- Goal -->
|
||||
<div class="flex-auto">
|
||||
<x-inputs.label for="goal" value="Goal" />
|
||||
<x-inputs.input name="goal"
|
||||
type="number"
|
||||
step="any"
|
||||
class="block w-full"
|
||||
:value="old('goal', $goal->goal)"
|
||||
:hasError="$errors->has('goal')"
|
||||
required />
|
||||
</div>
|
||||
<!-- Days of the week -->
|
||||
<fieldset class="flex-auto">
|
||||
<legend class="block font-medium text-sm text-gray-700">Days of the week</legend>
|
||||
<div class="inline-flex justify-between divide-x border rounded-md shadow-sm border-gray-300">
|
||||
@foreach(\App\Models\Goal::days() as $day)
|
||||
<x-inputs.label class="inline-flex items-center p-2">
|
||||
<x-inputs.input type="checkbox" name="days[]" :value="$day['value']" />
|
||||
<span class="ml-2">{{ \Illuminate\Support\Str::ucfirst($day['label']) }}</span>
|
||||
</x-inputs.label>
|
||||
@endforeach
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="flex flex-col space-y-4 md:flex-row md:space-y-0">
|
||||
@foreach (\App\Support\Nutrients::all()->sortBy('weight') as $nutrient)
|
||||
<!-- {{ ucfirst($nutrient['value']) }} -->
|
||||
<div class="flex-auto">
|
||||
<x-inputs.label for="{{ $nutrient['value'] }}"
|
||||
:value="ucfirst($nutrient['value']) . ($nutrient['unit'] ? ' (' . $nutrient['unit'] . ')' : '')"/>
|
||||
|
||||
<x-inputs.input name="{{ $nutrient['value'] }}"
|
||||
type="number"
|
||||
step="any"
|
||||
class="block w-full mt-1 md:w-5/6"
|
||||
:value="old($nutrient['value'], $goal->{$nutrient['value']})"
|
||||
:hasError="$errors->has($nutrient['value'])"/>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue