From e7b4214f0c203fe1a89e444aa74a889bcd16a113 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Thu, 5 Feb 2026 11:33:18 +0530 Subject: [PATCH] Added lower, middle, upper column to allow only validation --- .../ProductCharacteristicsMasterResource.php | 53 ++++++++++++------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/app/Filament/Resources/ProductCharacteristicsMasterResource.php b/app/Filament/Resources/ProductCharacteristicsMasterResource.php index 0074024..2396211 100644 --- a/app/Filament/Resources/ProductCharacteristicsMasterResource.php +++ b/app/Filament/Resources/ProductCharacteristicsMasterResource.php @@ -11,6 +11,7 @@ use App\Models\Machine; use App\Models\Plant; use App\Models\ProductCharacteristicsMaster; use App\Models\WorkGroupMaster; +use Closure; use Filament\Facades\Filament; use Filament\Forms; use Filament\Forms\Components\DateTimePicker; @@ -45,7 +46,7 @@ class ProductCharacteristicsMasterResource extends Resource ->options(function (callable $get) { $userHas = Filament::auth()->user()->plant_id; - return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray(); + return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::orderBy('code')->pluck('name', 'id')->toArray(); }) ->reactive() ->required(), @@ -189,33 +190,45 @@ class ProductCharacteristicsMasterResource extends Resource // session()->put('temp_result', $state); // }) // ->hidden(fn (callable $get) => $get('inspection_type') != 'Visual'), - Forms\Components\TextInput::make('upper') - ->label('Upper') - ->numeric() - ->default(0.0) - ->visible(fn (callable $get) => $get('inspection_type') == 'Value'), Forms\Components\TextInput::make('lower') ->label('Lower') ->numeric() + ->reactive() ->default(0.0) + ->minValue(0.0) + ->maxValue(fn (Get $get) => $get('upper') ?? PHP_INT_MAX) + ->afterStateUpdated(fn ($state, callable $set, callable $get) => $set('middle', ($state + $get('upper')) / 2)) + ->visible(fn (callable $get) => $get('inspection_type') == 'Value'), + Forms\Components\TextInput::make('upper') + ->label('Upper') + ->numeric() + ->reactive() + ->default(0.0) + ->minValue(fn (Get $get) => $get('lower') ?? 0) + ->maxValue(PHP_INT_MAX) + ->afterStateUpdated(fn ($state, callable $set, callable $get) => $set('middle', ($get('lower') + $state) / 2)) ->visible(fn (callable $get) => $get('inspection_type') == 'Value'), Forms\Components\TextInput::make('middle') ->label('Middle') + ->readOnly() ->numeric() - ->visible(fn (callable $get) => $get('inspection_type') == 'Value') - ->rule(function (callable $get) { - return function (string $attribute, $value, \Closure $fail) use ($get) { - $lower = $get('lower'); - $upper = $get('upper'); - $middle = $value; + ->reactive() + ->default(0.0) + // ->rule(function (callable $get) { + // return function (string $attribute, $value, Closure $fail) use ($get) { + // $lower = $get('lower'); + // $upper = $get('upper'); + // $middle = $value; - if (! is_null($lower) && ! is_null($upper) && ! is_null($middle)) { - if (! ($lower <= $middle && $middle <= $upper)) { - $fail('Middle must be between Lower and Upper (Lower ≤ Middle ≤ Upper).'); - } - } - }; - }), + // if (! is_null($lower) && ! is_null($upper) && ! is_null($middle)) { + // if ((($lower <= $middle || $middle >= $upper) && $lower != $upper) || (($lower < $middle || $middle > $upper) && $lower == $upper)) { + // $fail('Middle must be between Lower and Upper (Lower ≤ Middle ≤ Upper).'); + // } + // } + // }; + // }) + ->dehydrateStateUsing(fn ($state, Get $get) => ($get('lower') + $get('upper')) / 2) + ->visible(fn (callable $get) => $get('inspection_type') == 'Value'), Forms\Components\Hidden::make('created_by') ->label('Created By') ->default(Filament::auth()->user()?->name), @@ -330,7 +343,7 @@ class ProductCharacteristicsMasterResource extends Resource ->options(function (callable $get) { $userHas = Filament::auth()->user()->plant_id; - return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray(); + return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::orderBy('code')->pluck('name', 'id')->toArray(); }) ->reactive() ->afterStateUpdated(function ($state, callable $set, callable $get) {