From 511a491be2d03fbab4d3fb672b0833ee9eac93c4 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Wed, 14 Jan 2026 09:08:36 +0530 Subject: [PATCH] Add reactive behavior to form fields and update options based on plant selection --- .../Resources/MfmParameterResource.php | 59 ++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/MfmParameterResource.php b/app/Filament/Resources/MfmParameterResource.php index 07dd55d..2c60311 100644 --- a/app/Filament/Resources/MfmParameterResource.php +++ b/app/Filament/Resources/MfmParameterResource.php @@ -36,30 +36,84 @@ class MfmParameterResource extends Resource Forms\Components\Select::make('plant_id') ->label('Plant') ->relationship('plant', 'name') + ->reactive() ->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(); }) + ->afterStateUpdated(function (callable $set) { + $set('device_master_id', null); + $set('mfm_meter_id', null); + $set('name', null); + $set('register_id', null); + $set('identifier', null); + $set('byte_to_convert', null); + $set('type_to_convert', null); + $set('decimal_to_display', null); + }) ->required(), Forms\Components\Select::make('device_master_id') ->label('Device Master') - ->relationship('deviceName', 'name') + //->relationship('deviceName', 'name') + ->options(function (callable $get) { + $plantId = $get('plant_id'); + + if (!$plantId) { + return []; + } + + return \App\Models\DeviceMaster::where('plant_id', $plantId) + ->pluck('name', 'id'); + }) + ->afterStateUpdated(function (callable $set) { + $set('mfm_meter_id', null); + $set('name', null); + $set('register_id', null); + $set('identifier', null); + $set('byte_to_convert', null); + $set('type_to_convert', null); + $set('decimal_to_display', null); + }) + ->reactive() ->required(), Forms\Components\Select::make('mfm_meter_id') ->label('Mfm Meter') - ->relationship('mfmMeter', 'sequence') + // ->relationship('mfmMeter', 'sequence') + ->options(function (callable $get) { + $plantId = $get('plant_id'); + + if (!$plantId) { + return []; + } + + return \App\Models\MfmMeter::where('plant_id', $plantId) + ->pluck('sequence', 'id'); + }) + ->afterStateUpdated(function (callable $set) { + $set('name', null); + $set('register_id', null); + $set('identifier', null); + $set('byte_to_convert', null); + $set('type_to_convert', null); + $set('decimal_to_display', null); + }) + ->reactive() ->required(), Forms\Components\TextInput::make('name') ->label('Parameter Name') + ->reactive() ->required(), Forms\Components\TextInput::make('register_id') ->label('Register ID') + ->reactive() ->required(), Forms\Components\TextInput::make('identifier') ->label('Identifier') + ->reactive() ->required(), Forms\Components\TextInput::make('byte_to_convert') ->label('Byte To Convert') + ->reactive() ->default(2) ->required(), Forms\Components\TextInput::make('type_to_convert') @@ -67,6 +121,7 @@ class MfmParameterResource extends Resource ->required(), Forms\Components\TextInput::make('decimal_to_display') ->label('Decimal To Display') + ->reactive() ->default(1) ->required(), ])