wip zuabschlaege pdf
This commit is contained in:
1 parent
88d561675d
commit
7917777b93
23 files changed
+510
-604
No files matched your search
@@ -9,13 +9,21 @@ class CreateProjektMethoden
|
||||
{
|
||||
public function create($record)
|
||||
{
|
||||
ProjektMethode::where('projekte_id', $record->id)->delete();
|
||||
$projekt_raeumealles = ProjektObjekteImDetail::where('projekte_id', $record->id)->get();
|
||||
foreach ($projekt_raeumealles as $raeumealle) {
|
||||
|
||||
$objekte_im_detail = ProjektObjekteImDetail::where('projekte_id', $record->id)->get();
|
||||
|
||||
$arr = [];
|
||||
foreach ($objekte_im_detail as $row) {
|
||||
|
||||
$arr[] = $row->raumart;
|
||||
|
||||
ProjektMethode::firstOrCreate([
|
||||
'projekte_id' => $record->id,
|
||||
'raumart' => $raeumealle->raumart,
|
||||
'raumart' => $row->raumart,
|
||||
]);
|
||||
}
|
||||
|
||||
ProjektMethode::where('projekte_id', $record->id)->whereNotIn('raumart', $arr)->delete();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -10,8 +10,7 @@ class Inhalt
|
||||
{
|
||||
public static function create($projekte_id)
|
||||
{
|
||||
$html = '<div class="header">INHALTSVERZEICHNIS</div>';
|
||||
$html .= '<table class="inhalt">';
|
||||
$html = '<table class="inhalt">';
|
||||
$inhalte = ProjektInhaltsverzeichnis::where('projekte_id', $projekte_id)->orderBy('sort')->get();
|
||||
foreach ($inhalte as $inhalt) {
|
||||
if ($inhalt->ueberschrift_anzeigen) {
|
||||
|
||||
@@ -16,5 +16,6 @@ class Ueberschrift
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -71,13 +71,13 @@ class MakeGutachten
|
||||
$textblock = Format::fix_str($textblock);
|
||||
}
|
||||
|
||||
if ($inhalt->name == 'DECKBLATT') {
|
||||
$html = Deckblatt::create($textblock);
|
||||
} elseif ($inhalt->name == 'INHALTSVERZEICHNIS') {
|
||||
$html = Inhalt::create($projekte_id);
|
||||
} else {
|
||||
$html = Ueberschrift::create($inhalt);
|
||||
|
||||
$html = Ueberschrift::create($inhalt);
|
||||
if ($inhalt->name == 'DECKBLATT') {
|
||||
$html .= Deckblatt::create($textblock);
|
||||
} elseif ($inhalt->name == 'INHALTSVERZEICHNIS') {
|
||||
$html .= Inhalt::create($projekte_id);
|
||||
} else {
|
||||
|
||||
if ($inhalt->textblock) {
|
||||
$html .= $textblock;
|
||||
|
||||
@@ -70,25 +70,25 @@ class MakeNutzwerte
|
||||
$mpdf->AddPage();
|
||||
}
|
||||
|
||||
$html = Ueberschrift::create($inhalt);
|
||||
|
||||
if ($inhalt->textblock) {
|
||||
$html .= Platzhalter::replace($platzhalter, $inhalt->textblock);
|
||||
$textblock = Platzhalter::replace($platzhalter, $inhalt->textblock);
|
||||
$textblock = Format::fix_str($textblock);
|
||||
}
|
||||
|
||||
$html = Ueberschrift::create($inhalt);
|
||||
|
||||
switch ($inhalt->tabellen_id) {
|
||||
case '5':
|
||||
$html .= ZuUndAbschlaege::load($projekte_id);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($inhalt->seitenzahl_anzeige == 1) {
|
||||
$mpdf->SetHTMLFooter('<div class="center">Seite {PAGENO}<br><br></div>');
|
||||
}
|
||||
if ($html) {
|
||||
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
|
||||
if ($inhalt->seitenzahl_anzeige) {
|
||||
$mpdf->SetHTMLFooter('<div class="center">Seite {PAGENO}<br><br></div>');
|
||||
}
|
||||
if ($html != '') {
|
||||
$mpdf->WriteHTML($html, HTMLParserMode::HTML_BODY);
|
||||
}
|
||||
}
|
||||
|
||||
// foreach ($inhalte as $inhalt) {
|
||||
|
||||
@@ -2,72 +2,70 @@
|
||||
|
||||
namespace App\Actions\Generate\Nutzwerte;
|
||||
|
||||
use App\Actions\Generate\Utilities\Format;
|
||||
use App\Actions\Generate\Utilities\Html;
|
||||
use App\Models\Merkmale;
|
||||
use App\Models\ProjektObjekte;
|
||||
use App\Models\Raumalles;
|
||||
use App\Models\Raumorientierung;
|
||||
use App\Utilities\Format;
|
||||
use App\Utilities\Html;
|
||||
|
||||
class ZuUndAbschlaege
|
||||
{
|
||||
public static function load(int $projekte_id)
|
||||
{
|
||||
|
||||
$orientierungen = ProjektObjekte::select()
|
||||
$objekte = ProjektObjekte::select()
|
||||
->with('orientierung')
|
||||
->with('projektobjekteimdetail')
|
||||
->where('projekte_id', $projekte_id)
|
||||
->where('nicht_in_orientierung', 0)
|
||||
->get();
|
||||
|
||||
foreach ($orientierungen as $orientierung) {
|
||||
dd($orientierung);
|
||||
}
|
||||
$header_row = ['Top Nummer', 'Geschoß', 'Typ', 'Nutzfläche', 'Loggia / sonst. Zusatzflächen', 'Gesamtnutzfläche'];
|
||||
|
||||
// $total = Invoice::where('status', 'Completed')->sum('amount');
|
||||
$merkmale = Merkmale::where('projekte_id', $projekte_id)->pluck('name', 'code');
|
||||
|
||||
$header_row = ['Top', 'Geschoß', 'Typ', 'Nutzfläche', 'Loggia / sonst. Zusatzflächen', 'Gesamtnutzfläche'];
|
||||
$merkmale = Merkmale::merkmale($projekte_id);
|
||||
$markmale_col = [];
|
||||
foreach ($merkmale as $value) {
|
||||
$markmale_col[] = $value['col'];
|
||||
$header_row[] = $value['name'];
|
||||
$markmale_codes = [];
|
||||
foreach ($merkmale as $key => $value) {
|
||||
$markmale_codes[] = $key;
|
||||
$header_row[] = $value;
|
||||
}
|
||||
$header_row[] = 'Summe Merkmale';
|
||||
$header_row[] = 'Wohnungsbewertung';
|
||||
$html = Html::table_header_90($header_row);
|
||||
|
||||
$res = Raumalles::select('raumorientierung_id', 'geschoss')->where('projekte_id', $projekte_id)->where('methodes_id', 1)->get();
|
||||
$geschoss = [];
|
||||
foreach ($res as $value) {
|
||||
$id = $value->raumorientierung_id;
|
||||
$geschoss[$id] = $value['geschoss'];
|
||||
}
|
||||
$html = '<table class="table-striped">';
|
||||
$html .= Html::table_header_90($header_row);
|
||||
|
||||
$res = Raumorientierung::select()->where('projekte_id', $projekte_id)->where('nicht_in_orientierung', 0)->whereNotNull('top_nr')->orderBy('top_nr')->get();
|
||||
foreach ($res as $value) {
|
||||
$id = $value->id;
|
||||
$html .= '<tr>';
|
||||
$html .= Html::td($value->top_nr, 'left bl br bb');
|
||||
$html .= Html::td($geschoss[$value['id']], 'center br bb');
|
||||
$html .= Html::td($value->type, 'wp20 br bb');
|
||||
// Nutzfläache
|
||||
$html .= Html::td(Format::numeric($value->qm_m1, 2), 'right br bb');
|
||||
// Loggia
|
||||
$loggia = Raumalles::loggia($id);
|
||||
$gesnutzfl = $loggia + $value->qm_m1;
|
||||
$loggia = $loggia != 0 ? $loggia : '';
|
||||
$html .= Html::td($loggia, 'right br bb');
|
||||
// Gesammtnutzfläche = Nutzfläache + Loggia
|
||||
$html .= Html::td(Format::numeric($gesnutzfl, 2), 'right br bb');
|
||||
foreach ($markmale_col as $col) {
|
||||
$tmp = (float) $value[$col] != 0 ? $value[$col] : '';
|
||||
$html .= Html::td(Format::numeric($tmp, 2), 'right br bb');
|
||||
foreach ($objekte as $objekt) {
|
||||
|
||||
// dd($objekt);
|
||||
|
||||
$flaeche = 0;
|
||||
foreach ($objekt->projektobjekteimdetail as $key => $value) {
|
||||
$geschoss = $value['geschoss'];
|
||||
$flaeche += $value['flaeche'];
|
||||
}
|
||||
$html .= Html::td(Format::numeric($value->summe_az, 2), 'right br bb');
|
||||
$html .= Html::td(Format::numeric($value->bewertung, 2), 'right br bb');
|
||||
|
||||
$html .= '<tr>';
|
||||
$html .= Html::td($objekt->top_nummer, 'left bl br bb');
|
||||
$html .= Html::td($geschoss, 'center br bb');
|
||||
$html .= Html::td($objekt->type, 'wp20 br bb');
|
||||
// Nutzfläache
|
||||
$html .= Html::td(Format::dezimal($flaeche, 2), 'right br bb');
|
||||
// Loggia
|
||||
// $loggia = Raumalles::loggia($id);
|
||||
// $gesnutzfl = $loggia + $objekt->qm_m1;
|
||||
// $loggia = $loggia != 0 ? $loggia : '';
|
||||
// $html .= Html::td($loggia, 'right br bb');
|
||||
// // Gesammtnutzfläche = Nutzfläache + Loggia
|
||||
// $html .= Html::td(Format::numeric($gesnutzfl, 2), 'right br bb');
|
||||
// foreach ($markmale_codes as $code) {
|
||||
// $tmp = (float) $objekt[$code] != 0 ? $objekt[$code] : '';
|
||||
// $html .= Html::td(Format::numeric($tmp, 2), 'right br bb');
|
||||
// }
|
||||
// $html .= Html::td(Format::numeric($objekt->summe_az, 2), 'right br bb');
|
||||
// $html .= Html::td(Format::numeric($objekt->bewertung, 2), 'right br bb');
|
||||
$html .= '</tr>';
|
||||
}
|
||||
$html .= '</table>';
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
@@ -6,32 +6,16 @@ class Html
|
||||
{
|
||||
public static function table_header_90($_row)
|
||||
{
|
||||
$html = '<thead><tr text-rotate="90deg">';
|
||||
$html = '<thead><tr>';
|
||||
$mm = 190 / \count($_row);
|
||||
foreach ($_row as $value) {
|
||||
$html .= '<td class="head right bl bt br bb" style="background-color:#d1d1d1; width: '.$mm.'mm;">'.$value.'</td>';
|
||||
$html .= '<td class="rotated right bl bt br bb" style="background-color:#eff6ff; width: '.$mm.'mm;">'.$value.'</td>';
|
||||
}
|
||||
$html .= '</tr></thead>';
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
public static function make_table($str)
|
||||
{
|
||||
$array = explode('<br />', $str);
|
||||
$html = '<table class="table-striped bt bl">';
|
||||
foreach ($array as $value) {
|
||||
$tmp = explode('|', $value);
|
||||
$html .= '<tr>';
|
||||
$html .= self::td($tmp[0], 'br bb');
|
||||
$html .= self::td($tmp[1], 'br bb');
|
||||
$html .= '</tr>';
|
||||
}
|
||||
$html .= '</table>';
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
public static function td($value = '', $classname = '', $colspan = 0)
|
||||
{
|
||||
$cls = $classname != '' ? ' class="'.$classname.'"' : '';
|
||||
|
||||
@@ -155,7 +155,7 @@ class EditProjekte extends EditRecord
|
||||
ActionGroup::make([
|
||||
Action::make('make_gutachten')
|
||||
->hidden(fn ($record): bool => (! $record->bezahlt_am || $record->pdf_gutachten_status || ! $record->evaluation_gutachten) ? true : false)
|
||||
->label('Gutachten berechnen')
|
||||
->label('Standard Texte')
|
||||
->icon('phosphor-calculator')
|
||||
->url(fn ($record) => route('standard.download', ['record' => $record, 'mode' => 'new']))
|
||||
->openUrlInNewTab(),
|
||||
@@ -164,7 +164,7 @@ class EditProjekte extends EditRecord
|
||||
*/
|
||||
Action::make('make_nutzwerte')
|
||||
->hidden(fn ($record): bool => (! $record->bezahlt_am || $record->pdf_nutzwerte_status || ! $record->evaluation_gutachten) ? true : false)
|
||||
->label('Nutzwerte berechnen')
|
||||
->label('Nutzwerte')
|
||||
->icon('phosphor-calculator')
|
||||
->url(fn ($record) => route('nutzwerte.download', ['record' => $record, 'mode' => 'new']))
|
||||
->openUrlInNewTab(),
|
||||
|
||||
+11
-7
@@ -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',
|
||||
|
||||
+19
-2
@@ -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');
|
||||
}),
|
||||
|
||||
+14
-8
@@ -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²'))
|
||||
->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
|
||||
|
||||
+24
-21
@@ -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');
|
||||
|
||||
@@ -18,6 +18,7 @@ class WidgetMethoden extends TableWidget
|
||||
->query(fn (): Builder => Methode::query())
|
||||
->paginated(false)
|
||||
->columns([
|
||||
TextColumn::make('id')->label(''),
|
||||
TextColumn::make('name')
|
||||
->label('')
|
||||
->weight(FontWeight::Bold)
|
||||
|
||||
@@ -18,6 +18,19 @@ class Inhaltsverzeichnis extends Model
|
||||
'seitenzahl_anzeige',
|
||||
];
|
||||
|
||||
/**
|
||||
* Get the attributes that should be cast.
|
||||
*
|
||||
* @return array<string, string>
|
||||
*/
|
||||
protected function casts(): array
|
||||
{
|
||||
return [
|
||||
'ueberschrift_anzeigen' => 'boolean',
|
||||
'seitenzahl_anzeige' => 'boolean',
|
||||
];
|
||||
}
|
||||
|
||||
public function textblock()
|
||||
{
|
||||
return $this->hasMany(Textblock::class, 'id', 'textblock_id');
|
||||
|
||||
@@ -12,11 +12,6 @@ class Merkmale extends Model
|
||||
'name',
|
||||
];
|
||||
|
||||
public static function map($projekte_id)
|
||||
{
|
||||
return static::getModel()::where('projekte_id', $projekte_id)->pluck('name', 'code')->toArray();
|
||||
}
|
||||
|
||||
public static function getfreecode($projekte_id)
|
||||
{
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ class ProjektObjekte extends Model
|
||||
return $this->hasOne(Orientierung::class, 'id', 'orientierung_id');
|
||||
}
|
||||
|
||||
public function ProjektObjekteImDetail(): HasMany
|
||||
public function projektobjekteimdetail(): HasMany
|
||||
{
|
||||
return $this->hasMany(ProjektObjekteImDetail::class, 'projekt_objekte_id', 'id');
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user