refactor: streamline Excel export actions for Issue Management and Media Monitoring, and enhance table configurations for better clarity.

This commit is contained in:
Yoga Pangestu 2026-03-13 11:33:09 +07:00
parent e4e9d1d920
commit 734b5fad87
6 changed files with 37 additions and 43 deletions

View File

@ -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);
}

View File

@ -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),
];
}
}

View File

@ -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'),

View File

@ -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')

View File

@ -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),
];
}
}

View File

@ -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'),