wip zuabschlaege pdf

This commit is contained in:
salam committed 2025-10-28 13:40:01 +01:00
1 parent 88d561675d
commit 7917777b93
23 files changed
+510 -604

No files matched your search

@@ -30,6 +30,7 @@ use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Support\HtmlString;
class ProjektInhaltsverzeichnisRelationManager extends RelationManager
{
@@ -50,7 +51,7 @@ class ProjektInhaltsverzeichnisRelationManager extends RelationManager
Tabs::make('Tabs')
->tabs([
Tab::make('Überschrift')
->hidden(fn ($record) => $record->name == 'DECKBLATT' ? true : false)
->hidden(fn ($record) => $record?->name == 'DECKBLATT' ? true : false)
->schema([
Checkbox::make('neue_seite')
->label('Start neuer Seite'),
@@ -86,13 +87,15 @@ class ProjektInhaltsverzeichnisRelationManager extends RelationManager
->columnSpan(1),
]),
Tab::make('Textblock')
->hidden(fn ($record) => in_array($record?->name, ['INHALTSVERZEICHNIS']) ? true : false)
->schema([
Grid::make()
->columns(6)
->schema([
TextInput::make('konto_textblock_id')->hidden(),
RichEditor::make('textblock')
->aboveLabel('Ausgabe Textblock vor Tabelle')
->hiddenLabel()
->aboveLabel(fn ($record): string => $record?->tabellen_id != 0 ? 'Ausgabe Textblock vor Tabelle' : '')
->columnSpan(5)
->extraInputAttributes(['style' => 'min-height: 20rem; max-height: 50vh; overflow-y: auto;'])
->toolbarButtons([
@@ -124,11 +127,11 @@ class ProjektInhaltsverzeichnisRelationManager extends RelationManager
TextInput::make('name')->required()
->label('Ändern sie gegebeben Falls den Namen')
->default(function ($record) {
return KontoTextblock::where('id', $record['konto_textblock_id'])->pluck('name')->first();
return KontoTextblock::where('id', $record?->konto_textblock_id)->pluck('name')->first();
}),
])
->hidden(function ($record) {
return (bool) ! $record['konto_textblock_id'];
return (bool) ! $record?->konto_textblock_id;
})
->action(function (array $mountedActions, array $data) {
$record = $mountedActions[0]->getRawData();
@@ -144,7 +147,7 @@ class ProjektInhaltsverzeichnisRelationManager extends RelationManager
TextInput::make('name')->required()
->label('Geben sie der Vorlage einen eindeutigen Namen')
->default(function ($record) {
return $record['name'];
return $record?->name;
}),
])
->modalSubmitActionLabel('Sichern')
@@ -185,12 +188,12 @@ class ProjektInhaltsverzeichnisRelationManager extends RelationManager
]),
]),
Tab::make('Tabellen')
->hidden(fn ($record) => in_array($record?->name, ['DECKBLATT']) ? true : false)
->schema([
Select::make('tabellen_id')->label('Tabelle')
->aboveLabel('Ausgabe Textblock vor Tabelle')
->prefixIcon('phosphor-table')
->prefixIconColor(
fn ($record): string => $record->tabellen_id == 0 ? 'gray' : 'primary'
fn ($record): string => $record?->tabellen_id == 0 ? 'gray' : 'primary'
)
->default(0)
->options(function () {
@@ -250,6 +253,7 @@ class ProjektInhaltsverzeichnisRelationManager extends RelationManager
IconColumn::make('textblock')
->alignCenter()
->icon('phosphor-article')
->tooltip(fn ($record): HtmlString => new HtmlString($record->textblock))
->color(fn (string $state): string => match ($state) {
'0' => 'gray',
default => 'info',
@@ -10,6 +10,7 @@ use Filament\Actions\BulkAction;
use Filament\Actions\BulkActionGroup;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables\Columns\SelectColumn;
use Filament\Tables\Columns\TextColumn;
@@ -19,6 +20,7 @@ use Filament\Tables\Filters\TernaryFilter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\HtmlString;
use Livewire\Component;
class ProjektMethodesRelationManager extends RelationManager
@@ -90,11 +92,26 @@ class ProjektMethodesRelationManager extends RelationManager
->action(fn (CreateProjektMethoden $createProjektMethoden) => $createProjektMethoden->create($this->ownerRecord))
->requiresConfirmation()
->modalHeading('Raum Methoden erstellen')
->modalDescription('Alle bestehenden Daten in dieser Tabelle werden vorher gelöscht.')
->modalDescription(new HtmlString('Daten werden aus der Tabelle "Objekte im Detail" generiert. Änderungen werden übernommen nicht mehr verwendete Objekte gelöscht. <br>Um die Tabelle neu zu generieren bitte die Tabelle vorher leeren.'))
->modalSubmitActionLabel('Generieren')
->label('Generieren')
->tooltip('Daten werden aus "Räume Alle" Tabelle gefiltert.')
->tooltip('Daten werden aus der Tabelle "Objekte im Detail" generiert.')
->icon('heroicon-o-cog-8-tooth')
->extraModalFooterActions([
Action::make('delete')
->label('Leeren')
->color('danger')
->requiresConfirmation()
->action(function () {
ProjektMethode::where('projekte_id', $this->ownerRecord->id)->delete();
Notification::make()
->title('Tabelle "Raum Methode" wurde geleert')
->success()
->send();
}),
])
->after(function (Component $livewire) {
$livewire->dispatch('refreshMethods');
}),
@@ -44,13 +44,17 @@ class ProjektObjekteImDetailRelationManager extends RelationManager
Select::make('projekt_objekte_id')
->relationship('top_nummer', 'top_nummer', fn (Builder $query) => $query->where('projekte_id', $this->getOwnerRecord()->id))
->required()
->searchable(),
TextInput::make('geschoss')
->required()
->maxLength(255),
->searchable()
->columnSpan(3),
TextInput::make('raumart')
->required()
->maxLength(255),
->maxLength(255)
->columnSpan(3),
TextInput::make('geschoss')
->required()
->maxLength(255)
->suffixIcon('phosphor-building')
->columnSpan(2),
TextInput::make('flaeche')
->suffix(new HtmlString(' m&sup2;'))
->rules(['required', 'flaeche' => 'decimal:2'])
@@ -61,7 +65,8 @@ class ProjektObjekteImDetailRelationManager extends RelationManager
])
->afterStateUpdated(function (Component $livewire) {
$livewire->dispatch('refreshProjektAllgemeinflaechen');
}),
})
->columnSpan(2),
TextInput::make('faktor')
->suffixIcon('phosphor-function')
->rules(['required', 'faktor' => 'decimal:0,2'])
@@ -70,8 +75,9 @@ class ProjektObjekteImDetailRelationManager extends RelationManager
})->validationMessages([
'required' => 'Die Eingabe eines Faktors ist erforderlich.',
'decimal' => 'Für den Faktors sind zwei Dezimalstellen erforderlich.',
]),
]);
])
->columnSpan(2),
])->columns(6);
}
public function table(Table $table): Table
@@ -2,34 +2,34 @@
namespace App\Filament\Resources\Projektes\RelationManagers;
use Livewire\Component;
use App\Actions\Create\CreateProjektObjekte;
use App\Models\Merkmale;
use Filament\Tables\Table;
use App\Models\Orientierung;
use Filament\Actions\Action;
use Filament\Schemas\Schema;
use App\Models\ProjektObjekte;
use Filament\Actions\Action;
use Filament\Actions\BulkAction;
use Filament\Actions\EditAction;
use Filament\Support\Enums\Width;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\CreateAction;
use Filament\Actions\DeleteAction;
use Illuminate\Support\HtmlString;
use Filament\Actions\EditAction;
use Filament\Forms\Components\Radio;
use Filament\Actions\BulkActionGroup;
use Filament\Forms\Components\Select;
use Illuminate\Support\Facades\Blade;
use Filament\Support\Enums\FontWeight;
use Filament\Tables\Columns\TextColumn;
use Filament\Forms\Components\TextInput;
use Filament\Tables\Columns\SelectColumn;
use Filament\Tables\Filters\TernaryFilter;
use Filament\Tables\Columns\CheckboxColumn;
use App\Actions\Create\CreateProjektObjekte;
use Filament\Tables\Columns\Summarizers\Sum;
use Filament\Tables\Columns\TextInputColumn;
use Illuminate\Database\Eloquent\Collection;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Schema;
use Filament\Support\Enums\FontWeight;
use Filament\Support\Enums\Width;
use Filament\Tables\Columns\CheckboxColumn;
use Filament\Tables\Columns\SelectColumn;
use Filament\Tables\Columns\Summarizers\Sum;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Columns\TextInputColumn;
use Filament\Tables\Filters\TernaryFilter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\HtmlString;
use Livewire\Component;
class ProjektObjekteRelationManager extends RelationManager
{
@@ -48,9 +48,10 @@ class ProjektObjekteRelationManager extends RelationManager
return $schema
->components([
TextInput::make('top_nummer')
->label('Top Nummer')
->required()
->maxLength(255),
]);
])->columns(1);
}
public function table(Table $table): Table
@@ -62,7 +63,7 @@ class ProjektObjekteRelationManager extends RelationManager
// ->striped()
->emptyStateDescription('Schalten Sie das Projekt frei und importieren Sie die Daten der Objekte.')
->recordTitleAttribute('top_nummer')
->description(new HtmlString('<span class="flex gap-1.5">Orientierungen, Zu- und Abschläge, '. Blade::render('<x-lucide-locate-off class="w-3 h-3 mt-1" />'). ' Nicht in Orientierung</span>'))
->description(new HtmlString('<span class="flex gap-1.5">Orientierungen, Zu- und Abschläge, '.Blade::render('<x-lucide-locate-off class="w-3 h-3 mt-1" />').' Nicht in Orientierung</span>'))
->columns([
TextColumn::make('top_nummer')
->alignCenter()
@@ -248,6 +249,8 @@ class ProjektObjekteRelationManager extends RelationManager
])
->headerActions([
CreateAction::make()
->modalHeading('Objekt erstellen')
->modalDescription('Die dazugehörigen Räume werde in "Objekte im Detail" erstellt.')
->icon('phosphor-file-plus')
->createAnother(false),
Action::make('merkmale')
@@ -268,7 +271,7 @@ class ProjektObjekteRelationManager extends RelationManager
// ->modalDescription('Alle bestehenden Daten in dieser Tabelle werden vorher gelöscht.')
// ->modalSubmitActionLabel('Generieren')
// ->label('Generieren')
// ->tooltip('Daten werden aus "Räume Alle" gefiltert.')
// ->tooltip('Daten werden aus "Objekte im Detail" gefiltert.')
// ->icon('heroicon-o-cog-8-tooth')
// ->after(function (Component $livewire) {
// $livewire->dispatch('refreshOrientierung');