From 734b5fad8702d24aff5d2ef865d318305e2d0c68 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Fri, 13 Mar 2026 11:33:09 +0700 Subject: [PATCH] refactor: streamline Excel export actions for Issue Management and Media Monitoring, and enhance table configurations for better clarity. --- .../Exports/MediaMonitoringExcelExport.php | 5 --- .../Pages/ListIssueManagements.php | 10 +++++ .../Tables/IssueManagementTable.php | 38 +++++++------------ .../Actions/CrawlNewsAction.php | 2 - .../Pages/ListMediaMonitorings.php | 13 +++++++ .../Tables/MediaMonitoringsTable.php | 12 ------ 6 files changed, 37 insertions(+), 43 deletions(-) diff --git a/app/Filament/Exports/MediaMonitoringExcelExport.php b/app/Filament/Exports/MediaMonitoringExcelExport.php index 3a280ce..2f1b0b8 100644 --- a/app/Filament/Exports/MediaMonitoringExcelExport.php +++ b/app/Filament/Exports/MediaMonitoringExcelExport.php @@ -84,18 +84,13 @@ public function registerEvents(): array $sheet = $event->sheet->getDelegate(); $lastColumn = 'K'; // Based on column count (A-K) - // Merge Title Row - // Merge Title Row $sheet->mergeCells("A1:{$lastColumn}1"); - // Alignment and Wrap Text $sheet->getStyle("A2:{$lastColumn}".$sheet->getHighestRow()) ->getAlignment() ->setVertical(Alignment::VERTICAL_TOP) ->setWrapText(true); - // Ensure data rows auto-expand to fit wrapped text ("jadi 2 row") - // We start from row 3 (after Title and Header) for ($i = 3; $i <= $sheet->getHighestRow(); $i++) { $sheet->getRowDimension($i)->setRowHeight(-1); } diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Pages/ListIssueManagements.php b/app/Filament/Resources/Monitoring/IssueManagements/Pages/ListIssueManagements.php index 4c3a196..090f1a2 100644 --- a/app/Filament/Resources/Monitoring/IssueManagements/Pages/ListIssueManagements.php +++ b/app/Filament/Resources/Monitoring/IssueManagements/Pages/ListIssueManagements.php @@ -2,9 +2,11 @@ namespace App\Filament\Resources\Monitoring\IssueManagements\Pages; +use App\Filament\Exports\IssueManagementExcelExport; use App\Filament\Resources\Monitoring\IssueManagements\IssueManagementResource; use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; +use pxlrbt\FilamentExcel\Actions\ExportAction; class ListIssueManagements extends ListRecords { @@ -17,6 +19,14 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah'), + + ExportAction::make() + ->exports([ + IssueManagementExcelExport::make() + ->fromTable(), + ]) + ->color('success') + ->icon(null), ]; } } diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php b/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php index 464f6cf..a51d779 100644 --- a/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php +++ b/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php @@ -10,7 +10,6 @@ use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; -use App\Filament\Exports\IssueManagementExcelExport; use Filament\Actions\BulkActionGroup; use Filament\Forms\Components\DatePicker; use Filament\Forms\Components\Select; @@ -23,7 +22,6 @@ use Filament\Tables\Filters\TrashedFilter; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; -use pxlrbt\FilamentExcel\Actions\Tables\ExportAction; class IssueManagementTable { @@ -179,23 +177,22 @@ public static function configure(Table $table): Table ->query(function (Builder $query, array $data): Builder { $type = $data['date_type'] ?? null; - // Filtering based on mediaMonitoring.release_date relationship - $query->whereHas('mediaMonitoring', function (Builder $query) use ($type, $data) { - $column = 'release_date'; + return $query->when($type, function (Builder $query) use ($type, $data) { + return $query->whereHas('mediaMonitoring', function (Builder $query) use ($type, $data) { + $column = 'release_date'; - if ($type === 'date' && ! empty($data['specific_date'])) { - $query->whereDate($column, $data['specific_date']); - } elseif ($type === 'month' && ! empty($data['month']) && ! empty($data['year'])) { - $query->whereMonth($column, $data['month']) - ->whereYear($column, $data['year']); - } elseif ($type === 'year' && ! empty($data['year'])) { - $query->whereYear($column, $data['year']); - } elseif ($type === 'range' && ! empty($data['start_date']) && ! empty($data['end_date'])) { - $query->whereBetween($column, [$data['start_date'], $data['end_date']]); - } + if ($type === 'date' && ! empty($data['specific_date'])) { + $query->whereDate($column, $data['specific_date']); + } elseif ($type === 'month' && ! empty($data['month']) && ! empty($data['year'])) { + $query->whereMonth($column, $data['month']) + ->whereYear($column, $data['year']); + } elseif ($type === 'year' && ! empty($data['year'])) { + $query->whereYear($column, $data['year']); + } elseif ($type === 'range' && ! empty($data['start_date']) && ! empty($data['end_date'])) { + $query->whereBetween($column, [$data['start_date'], $data['end_date']]); + } + }); }); - - return $query; }), ], FiltersLayout::AboveContentCollapsible) ->filtersFormColumns(3) @@ -208,13 +205,6 @@ public static function configure(Table $table): Table ForceDeleteAction::make(), ]) - ->headerActions([ - ExportAction::make() - ->exports([ - IssueManagementExcelExport::make(), - ]) - ->color('success'), - ]) ->toolbarActions([ BulkActionGroup::make([ ...DefaultBulkActions::make('Manajemen Isu'), diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php index d017a2d..4858bba 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php @@ -9,7 +9,6 @@ use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; use Filament\Support\Enums\Width; -use Filament\Support\Icons\Heroicon; class CrawlNewsAction extends Action { @@ -18,7 +17,6 @@ protected function setUp(): void parent::setUp(); $this->label('Crawl Berita') - ->icon(Heroicon::MagnifyingGlass) ->color('slate') ->schema([ TextInput::make('keyword') diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/ListMediaMonitorings.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/ListMediaMonitorings.php index da62822..47220f7 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/ListMediaMonitorings.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/ListMediaMonitorings.php @@ -2,9 +2,12 @@ namespace App\Filament\Resources\Monitoring\MediaMonitorings\Pages; +use App\Filament\Exports\MediaMonitoringExcelExport; +use App\Filament\Resources\Monitoring\MediaMonitorings\Actions\CrawlNewsAction; use App\Filament\Resources\Monitoring\MediaMonitorings\MediaMonitoringResource; use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; +use pxlrbt\FilamentExcel\Actions\ExportAction; class ListMediaMonitorings extends ListRecords { @@ -17,6 +20,16 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah'), + + CrawlNewsAction::make('crawlNews'), + + ExportAction::make() + ->exports([ + MediaMonitoringExcelExport::make() + ->fromTable(), + ]) + ->color('success') + ->icon(null), ]; } } diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php index ec18f8d..2c78e37 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php @@ -10,8 +10,6 @@ use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; -use App\Filament\Exports\MediaMonitoringExcelExport; -use App\Filament\Resources\Monitoring\MediaMonitorings\Actions\CrawlNewsAction; use Filament\Actions\BulkActionGroup; use Filament\Forms\Components\DatePicker; use Filament\Forms\Components\Select; @@ -25,7 +23,6 @@ use Filament\Tables\Filters\TrashedFilter; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; -use pxlrbt\FilamentExcel\Actions\Tables\ExportAction; class MediaMonitoringsTable { @@ -219,15 +216,6 @@ public static function configure(Table $table): Table RestoreAction::make(), ]) - ->headerActions([ - CrawlNewsAction::make('crawlNews'), - - ExportAction::make() - ->exports([ - MediaMonitoringExcelExport::make(), - ]) - ->color('success'), - ]) ->toolbarActions([ BulkActionGroup::make([ ...DefaultBulkActions::make('Monitoring Media'),