Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Gemini PR Review / Gemini PR Review (pull_request) Has been cancelled
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Has been cancelled
Laravel Larastan / larastan (pull_request) Has been cancelled
Laravel Pint / pint (pull_request) Has been cancelled
174 lines
6.7 KiB
PHP
174 lines
6.7 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Pages;
|
|
|
|
use App\Models\Plant;
|
|
use Filament\Facades\Filament;
|
|
use Filament\Forms\Components\DatePicker;
|
|
use Filament\Pages\Page;
|
|
use Filament\Forms\Form;
|
|
use Filament\Forms\Components\Section;
|
|
use Filament\Forms\Components\Select;
|
|
use Filament\Forms\Components\TextInput;
|
|
use Filament\Notifications\Notification;
|
|
|
|
class ProductionTarget extends Page
|
|
{
|
|
protected static ?string $navigationIcon = 'heroicon-o-document-text';
|
|
|
|
protected static string $view = 'filament.pages.production-target';
|
|
|
|
public array $filters = [];
|
|
|
|
|
|
public function form(Form $form): Form
|
|
{
|
|
return $form
|
|
->statePath('filters')
|
|
->schema([
|
|
Section::make('')
|
|
->schema([
|
|
Select::make('plant_id')
|
|
->label('Plant')
|
|
->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();
|
|
})
|
|
->required()
|
|
->afterStateUpdated(function ($state, callable $get, $set) {
|
|
$set('line_id', null);
|
|
$set('year', null);
|
|
$set('month', null);
|
|
$this->dispatch('loadData',$state, '', '', '');
|
|
}),
|
|
Select::make('line_id')
|
|
->label('Line')
|
|
->required()
|
|
->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()
|
|
->options([
|
|
'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()
|
|
->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);
|
|
}
|
|
}
|