From 58e6e9df56c10450f1649a1f21603824d632ba25 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Thu, 19 Feb 2026 11:47:51 +0530 Subject: [PATCH] Added production target page and blade file --- app/Filament/Pages/ProductionTarget.php | 189 ++++++++++++++++++ .../pages/production-target.blade.php | 19 ++ 2 files changed, 208 insertions(+) create mode 100644 app/Filament/Pages/ProductionTarget.php create mode 100644 resources/views/filament/pages/production-target.blade.php diff --git a/app/Filament/Pages/ProductionTarget.php b/app/Filament/Pages/ProductionTarget.php new file mode 100644 index 000000000..f8d4ede5b --- /dev/null +++ b/app/Filament/Pages/ProductionTarget.php @@ -0,0 +1,189 @@ +statePath('filters') + ->schema([ + Section::make('') + ->schema([ + Select::make('plant_id') + ->label('Plant') + ->relationship('plant', 'name') + ->reactive() + // ->searchable() + ->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(); + }) + ->required() + ->afterStateUpdated(function ($state, callable $get, $set) { + // dd($state); + $set('line_id', null); + $set('year', null); + $set('month', null); + $this->dispatch('loadData',$state, '', '', ''); + }), + Select::make('line_id') + ->label('Line') + ->required() + ->relationship('line', 'name') + // ->searchable() + ->columnSpan(1) + ->options(function (callable $get) { + if (!$get('plant_id')) { + return []; + } + + return \App\Models\Line::where('plant_id', $get('plant_id')) + ->pluck('name', 'id') + ->toArray(); + }) + ->reactive() + ->afterStateUpdated(function ($state, callable $get, $set) { + $plantId = $get('plant_id'); + + + $set('year', null); + $set('month', null); + $this->dispatch('loadData',$plantId, $state, '', ''); + }), + Select::make('year') + ->label('Year') + ->reactive() + // ->searchable() + ->options([ + '2025' => '2025', + '2026' => '2026', + '2027' => '2027', + '2028' => '2028', + '2029' => '2029', + '2030' => '2030', + '2031' => '2031', + '2032' => '2032', + '2033' => '2033', + '2034' => '2034', + '2035' => '2035', + '2036' => '2036', + '2037' => '2037', + '2038' => '2038', + '2039' => '2039', + '2040' => '2040', + ]) + ->required() + ->afterStateUpdated(function ($state, callable $get, $set) { + $set('month', null); + $plantId = $get('plant_id'); + $lineId = $get('line_id'); + $this->dispatch('loadData',$plantId, $lineId, $state, ''); + }), + + Select::make('month') + ->label('Month') + ->reactive() + // ->searchable() + ->options([ + '01' => 'January', + '02' => 'February', + '03' => 'March', + '04' => 'April', + '05' => 'May', + '06' => 'June', + '07' => 'July', + '08' => 'August', + '09' => 'September', + '10' => 'October', + '11' => 'November', + '12' => 'December', + ]) + ->required() + ->afterStateUpdated(function ($state, callable $get) { + + $plantId = $get('plant_id'); + $lineId = $get('line_id'); + // $month = $get('month'); + $year = $get('year'); + + $month = (int) $get('month'); + + if (!$month) { + return; + } + $this->dispatch('loadData', $plantId, $lineId, $month, $year); + }), + + ]) + ->columns(4) + ]); + } + + public function export(){ + + $plantId = $this->filters['plant_id'] ?? null; + $lineId = $this->filters['line_id'] ?? null; + $year = $this->filters['year'] ?? null; + $month = $this->filters['month'] ?? null; + + if (! $plantId) { + Notification::make() + ->title('Plant') + ->body("please select plant to export data..!") + ->danger() + ->send(); + return; + } + else if (! $lineId) { + Notification::make() + ->title('Line') + ->body("please select line to export data..!") + ->danger() + ->send(); + return; + } + else if (! $year) { + Notification::make() + ->title('Year') + ->body("please select year to export data..!") + ->danger() + ->send(); + return; + } + else if (! $month) { + Notification::make() + ->title('Month') + ->body("please select month to export data..!") + ->danger() + ->send(); + return; + } + + $this->dispatch('loadData1' ,$plantId, $lineId, $year, $month); + } + + public static function canAccess(): bool + { + return Auth::check() && Auth::user()->can('view production target page'); + } +} diff --git a/resources/views/filament/pages/production-target.blade.php b/resources/views/filament/pages/production-target.blade.php new file mode 100644 index 000000000..242dbbbb0 --- /dev/null +++ b/resources/views/filament/pages/production-target.blade.php @@ -0,0 +1,19 @@ + +
+ + {{-- Render the Select form fields --}} +
+ {{ $this->form }} +
+ + Export + +
+ +
+
+