wip orientierung

This commit is contained in:
salam committed 2025-10-08 10:48:04 +02:00
1 parent 0df1017cb7
commit 79c0b14bb5
11 files changed
+284 -12259

No files matched your search

@@ -3,13 +3,22 @@
namespace App\Filament\Resources\Projektes\RelationManagers;
use App\Actions\CreateOrientierungZuAbschlaege;
use App\Models\Merkmale;
use App\Models\Orientierung;
use App\Models\OrientierungZuAbschlaege;
use Filament\Actions\Action;
use Filament\Actions\BulkAction;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Support\Enums\Width;
use Filament\Tables\Columns\CheckboxColumn;
use Filament\Tables\Columns\SelectColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Columns\TextInputColumn;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Collection;
class OrientierungZuAbschlaegesRelationManager extends RelationManager
{
@@ -25,19 +34,53 @@ class OrientierungZuAbschlaegesRelationManager extends RelationManager
public function table(Table $table): Table
{
$spalten = Merkmale::map($this->ownerRecord->id);
return $table
->recordTitleAttribute('top_nummer')
->columns([
TextColumn::make('top_nummer')
->searchable(),
CheckboxColumn::make('nicht_in_orientierung')
->label('NiO')
->toggleable(),
TextInputColumn::make('raumart')
->toggleable()
->width('2rem')
->rules(['required'])
->searchable(),
SelectColumn::make('orientierung_id')
->toggleable()
->width('2rem')
->label('Orientierung')
->selectablePlaceholder(true)
->options(Orientierung::pluck('name', 'id'))
->disableOptionWhen(fn (string $value): bool => in_array($value, [2, 11, 24, 33, 36]))
->preloadOptions(),
TextInputColumn::make('a')->label($spalten['a'] ?? '')->hidden(isset($spalten['a']) ? false : true)->toggleable()->rules(['numeric'])->alignCenter(),
TextInputColumn::make('b')->label($spalten['b'] ?? '')->hidden(isset($spalten['b']) ? false : true)->toggleable()->rules(['numeric'])->alignCenter(),
TextInputColumn::make('c')->label($spalten['c'] ?? '')->hidden(isset($spalten['c']) ? false : true)->toggleable()->rules(['numeric'])->alignCenter(),
TextInputColumn::make('d')->label($spalten['d'] ?? '')->hidden(isset($spalten['d']) ? false : true)->toggleable()->rules(['numeric'])->alignCenter(),
TextInputColumn::make('e')->label($spalten['e'] ?? '')->hidden(isset($spalten['e']) ? false : true)->toggleable()->rules(['numeric'])->alignCenter(),
TextInputColumn::make('f')->label($spalten['f'] ?? '')->hidden(isset($spalten['f']) ? false : true)->toggleable()->rules(['numeric'])->alignCenter(),
TextInputColumn::make('g')->label($spalten['g'] ?? '')->hidden(isset($spalten['g']) ? false : true)->toggleable()->rules(['numeric'])->alignCenter(),
TextInputColumn::make('h')->label($spalten['h'] ?? '')->hidden(isset($spalten['h']) ? false : true)->toggleable()->rules(['numeric'])->alignCenter(),
TextInputColumn::make('i')->label($spalten['i'] ?? '')->hidden(isset($spalten['i']) ? false : true)->toggleable()->rules(['numeric'])->alignCenter(),
TextInputColumn::make('j')->label($spalten['j'] ?? '')->hidden(isset($spalten['j']) ? false : true)->toggleable()->rules(['numeric'])->alignCenter(),
])
->filters([
//
])
->headerActions([
Action::make('merkmale')
->icon('phosphor-pen')
->modalCancelAction(fn (Action $action) => $action->label('Schließen'))
->modalSubmitAction(false)
->modalHeading('Merkmale')
// ->slideOver()
->modalWidth(Width::Medium)
->modalContent(view('filament.pages.actions.merkmale')),
Action::make('erstellen')
->action(fn (CreateOrientierungZuAbschlaege $createOrientierungZuAbschlaege) => $createOrientierungZuAbschlaege->create($this->ownerRecord))
->requiresConfirmation()
@@ -50,7 +93,42 @@ class OrientierungZuAbschlaegesRelationManager extends RelationManager
])
->toolbarActions([
BulkActionGroup::make([
DeleteBulkAction::make(),
BulkAction::make('raumart')
->color('primary')
->label('Raumart zuweisen')
->schema([
TextInput::make('raumart')
->prefixIcon('phosphor-house-simple'),
])
->icon('phosphor-house-simple')
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
OrientierungZuAbschlaege::where('id', '=', $record->id)
->update(
['raumart' => $data['raumart']]
);
}
}),
BulkAction::make('methode')
->color('primary')
->label('Orientierung zuweisen')
->schema([
Select::make('methode_id')
->label('Orientierung')
->prefixIcon('phosphor-compass')
->options(Orientierung::pluck('name', 'id'))
->disableOptionWhen(fn (string $value): bool => in_array($value, [2, 11, 24, 33, 36]))
->required(),
])
->icon('phosphor-compass')
->action(function (Collection $records, array $data): void {
foreach ($records as $record) {
OrientierungZuAbschlaege::where('id', '=', $record->id)
->update(
['orientierung_id' => $data['methode_id']]
);
}
}),
]),
]);
}