multiline wip

This commit is contained in:
salam committed 2025-12-14 13:09:09 +01:00
1 parent 988a148850
commit 245255756c
84 files changed
+663 -94

No files matched your search

@@ -2,10 +2,11 @@
namespace App\Filament\Resources\Clients\Tables;
use App\Actions\AlarmGenerator;
use App\Actions\MultilineGenerator;
use App\Models\Bookmaker;
use App\Models\Sport;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\Action;
use Filament\Actions\EditAction;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
@@ -23,7 +24,7 @@ class ClientsTable
->formatStateUsing(fn (string $state): string => Bookmaker::where('id', $state)->pluck('name')->first()),
TextColumn::make('sport')
->badge()
->color('secondary')
->color('warning')
->formatStateUsing(fn (string $state): string => Sport::where('id', $state)->pluck('name')->first()),
TextColumn::make('created_at')
->dateTime()
@@ -35,12 +36,19 @@ class ClientsTable
->toggleable(isToggledHiddenByDefault: true),
])
->recordActions([
Action::make('multiline')
->icon('phosphor-gear-fine')
->tooltip('Generates basic alarm configuration for client')
->action(function ($record) {
MultilineGenerator::run($record);
}),
Action::make('alarm')
->icon('phosphor-gear-fine')
->tooltip('Generates basic multiline configuration for client')
->action(function ($record) {
AlarmGenerator::run($record);
}),
EditAction::make(),
])
->toolbarActions([
BulkActionGroup::make([
DeleteBulkAction::make(),
]),
]);
}
}
@@ -43,22 +43,27 @@ class EventsTable
->label('Event')
->icon(fn ($record) => $record->country->icon)
->description(fn ($record) => $record->competition_group->name),
TextColumn::make('home.name')->alignRight(),
TextColumn::make('away.name'),
TextColumn::make('home.name')->alignRight()->searchable(),
TextColumn::make('away.name')->searchable(),
Odds3Way::make('odds_3way.bookmaker')->label('1X2'),
])
->defaultSort('starttime', 'ASC')
// ->deferFilters(false)
// ->filters([
// SelectFilter::make('sport_id')
// ->label('Sport')
// ->default(1)
// ->selectablePlaceholder(false)
// ->relationship('sport', 'name', fn (Builder $query) => $query->where('is_active', 1))
// ->preload(),
// ], FiltersLayout::AboveContent)
// ->hiddenFilterIndicators()
->deferFilters(false)
->filters([
SelectFilter::make('sport_id')
->label('Sport')
->default(1)
->selectablePlaceholder(false)
->relationship('sport', 'name', fn (Builder $query) => $query->where('is_active', 1))
->preload(),
// SelectFilter::make('competition_group_id')
// ->label('Tornament')
// ->options(fn () => Event::where('is_active', 1)->pluck('sport', 'id')
// ->relationship('sport', 'name', fn (Builder $query) => $query->where('is_active', 1))
// ->preload(),
], FiltersLayout::AboveContent)
->hiddenFilterIndicators(false)
->persistFiltersInSession()
->recordActions([
// EditAction::make(),
@@ -0,0 +1,55 @@
<?php
namespace App\Filament\Resources\MultilineSettings;
use App\Filament\Clusters\Administrator\AdministratorCluster;
use App\Filament\Resources\MultilineSettings\Pages\ListMultilineSettings;
use App\Filament\Resources\MultilineSettings\Schemas\MultilineSettingForm;
use App\Filament\Resources\MultilineSettings\Tables\MultilineSettingsTable;
use App\Models\MultilineSetting;
use BackedEnum;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Table;
class MultilineSettingResource extends Resource
{
protected static ?string $model = MultilineSetting::class;
protected static string|BackedEnum|null $navigationIcon = Heroicon::Bars3;
protected static ?string $cluster = AdministratorCluster::class;
protected static string|\UnitEnum|null $navigationGroup = 'Static Data';
protected static ?string $navigationLabel = 'Multiline';
// protected static ?string $modelLabel = 'Group';
// protected static ?string $title = 'Group';
// protected static ?string $pluralModelLabel = 'Groups';
public static function form(Schema $schema): Schema
{
return MultilineSettingForm::configure($schema);
}
public static function table(Table $table): Table
{
return MultilineSettingsTable::configure($table);
}
public static function getPages(): array
{
return [
'index' => ListMultilineSettings::route('/'),
];
}
public static function getNavigationBadge(): ?string
{
return parent::getEloquentQuery()->count();
}
}
@@ -0,0 +1,11 @@
<?php
namespace App\Filament\Resources\MultilineSettings\Pages;
use App\Filament\Resources\MultilineSettings\MultilineSettingResource;
use Filament\Resources\Pages\CreateRecord;
class CreateMultilineSetting extends CreateRecord
{
protected static string $resource = MultilineSettingResource::class;
}
@@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\MultilineSettings\Pages;
use App\Filament\Resources\MultilineSettings\MultilineSettingResource;
use Filament\Actions\DeleteAction;
use Filament\Resources\Pages\EditRecord;
class EditMultilineSetting extends EditRecord
{
protected static string $resource = MultilineSettingResource::class;
protected function getHeaderActions(): array
{
return [
DeleteAction::make(),
];
}
}
@@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\MultilineSettings\Pages;
use App\Filament\Resources\MultilineSettings\MultilineSettingResource;
use Filament\Actions\CreateAction;
use Filament\Resources\Pages\ListRecords;
class ListMultilineSettings extends ListRecords
{
protected static string $resource = MultilineSettingResource::class;
protected function getHeaderActions(): array
{
return [
CreateAction::make(),
];
}
}
@@ -0,0 +1,26 @@
<?php
namespace App\Filament\Resources\MultilineSettings\Schemas;
use App\Models\Sport;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Schema;
class MultilineSettingForm
{
public static function configure(Schema $schema): Schema
{
return $schema
->components([
TextInput::make('name')->required(),
TextInput::make('short')->required(),
TextInput::make('table')->required(),
Select::make('sport_id')
->required()
->label('Sport')
->options(fn () => Sport::where('is_active', 1)->pluck('name', 'id')
->toArray()),
]);
}
}
@@ -0,0 +1,52 @@
<?php
namespace App\Filament\Resources\MultilineSettings\Tables;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Enums\FiltersLayout;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
class MultilineSettingsTable
{
public static function configure(Table $table): Table
{
return $table
->columns([
IconColumn::make('sport.icon')
->label('')
->width('1rem')
->icon(function ($record): string {
return $record->sport->icon;
}),
TextColumn::make('sport.name'),
TextColumn::make('name'),
TextColumn::make('short'),
TextColumn::make('table'),
TextColumn::make('rows'),
])
->deferFilters(false)
->filters([
SelectFilter::make('sport_id')
->label('Sport')
->default(1)
->selectablePlaceholder(false)
->relationship('sport', 'name', fn (Builder $query) => $query->where('is_active', 1))
->preload(),
], FiltersLayout::AboveContent)
->hiddenFilterIndicators()
->recordActions([
EditAction::make(),
])
->toolbarActions([
BulkActionGroup::make([
DeleteBulkAction::make(),
]),
]);
}
}
@@ -2,7 +2,6 @@
namespace App\Filament\Resources\Multilines\Tables;
use App\Actions\MultilineGenerator;
use App\Filament\Tables\Columns\BookmakerIcon;
use Filament\Actions\Action;
use Filament\Tables\Columns\IconColumn;
@@ -24,7 +23,7 @@ class MultilinesTable
->label($isReordering ? 'Disable reordering' : 'Enable reordering'),
)
->reorderable('sort')
->defaultGroup('bettype.name')
->defaultGroup('name')
->columns([
IconColumn::make('sport.icon')
->label('')
@@ -32,9 +31,8 @@ class MultilinesTable
->icon(function ($record): string {
return $record->sport->icon;
}),
TextColumn::make('sport.name'),
TextColumn::make('matchpart.name'),
TextColumn::make('bettype.name'),
// TextColumn::make('sport.name'),
TextColumn::make('name'),
TextColumn::make('bookmaker.name'),
BookmakerIcon::make('bookmaker.icon')->label('Icon'),
])
@@ -49,13 +47,6 @@ class MultilinesTable
->preload(),
], FiltersLayout::AboveContent)
->hiddenFilterIndicators()
->persistFiltersInSession()
->headerActions([
Action::make('generate')
->icon('phosphor-gear-fine')
->action(function () {
MultilineGenerator::run();
}),
]);
->persistFiltersInSession();
}
}