diff --git a/app/Actions/Generate/PdfGenerator.php b/app/Actions/Generate/PdfGenerator.php index ed51405..a1b55fa 100644 --- a/app/Actions/Generate/PdfGenerator.php +++ b/app/Actions/Generate/PdfGenerator.php @@ -77,11 +77,20 @@ class PdfGenerator $stylesheet = file_get_contents(__DIR__.'/../../../resources/css/pdf-download.css'); - $bgcolors = []; - $bgcolors["'###BG_DECKBLATT###'"] = self::$projekt->deckblatt_bg; - $bgcolors["'###BG_HEADER###'"] = self::$projekt->schmuckfarbe_header; - $bgcolors["'###FARBE_RAHMEN###'"] = self::$projekt->farbe_borders; - $stylesheet = Platzhalter::replace($bgcolors, $stylesheet); + $colors = []; + if (self::$projekt->projekt_farben_verwenden) { + $colors["'###BG_DECKBLATT###'"] = self::$projekt->deckblatt_bg; + $colors["'###BG_HEADER###'"] = self::$projekt->schmuckfarbe_header; + $colors["'###FARBE_RAHMEN###'"] = self::$projekt->farbe_borders; + } else { + $colors["'###BG_DECKBLATT###'"] = self::$gutachter->deckblatt_bg; + $colors["'###BG_HEADER###'"] = self::$gutachter->schmuckfarbe_header; + $colors["'###FARBE_RAHMEN###'"] = self::$gutachter->farbe_borders; + } + + $stylesheet = Platzhalter::replace($colors, $stylesheet); + + // dd($stylesheet); $mpdf->WriteHTML($stylesheet, HTMLParserMode::HEADER_CSS); $mpdf->SetTitle($filename); diff --git a/app/Actions/Generate/Tabellen/Nutzwertberechnung.php b/app/Actions/Generate/Tabellen/Nutzwertberechnung.php index 3ea7557..79857e5 100644 --- a/app/Actions/Generate/Tabellen/Nutzwertberechnung.php +++ b/app/Actions/Generate/Tabellen/Nutzwertberechnung.php @@ -21,13 +21,13 @@ class Nutzwertberechnung $html .= ''; $html .= ''; $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; $html .= ''; $summe_nutzwert = 0; @@ -38,7 +38,7 @@ class Nutzwertberechnung $flaeche = 0; foreach ($methoden[1] as $komponente) { $html .= ''; - $html .= Html::td($komponente['top_nummer'], 'bg-user-set'); + $html .= Html::td($komponente['top_nummer'], 'bl bg-user-set'); $html .= Html::td($komponente['geschoss'], 'bl'); $html .= Html::td($komponente['orientierung'], 'bl'); $html .= Html::td($komponente['type'], 'bl'); @@ -180,11 +180,11 @@ class Nutzwertberechnung $html .= '
Top Nr.GeschoßOrientierungTypRaumartFlächeNutzwertGeschoßOrientierungTypRaumartFlächeNutzwert
'; $html .= ''; $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; $html .= ''; $nutzwert = 0; @@ -199,10 +199,11 @@ class Nutzwertberechnung $html .= Html::td('x', 'center bl'); $html .= Html::td(number_format($komponente['faktor'], 3), 'center bl'); $html .= Html::td('=', 'center bl'); - $nutzwert = $komponente['flaeche'] * $komponente['faktor']; - $html .= Html::td(number_format($nutzwert, 3, ',', '.'), 'right bl'); - $nutzwert = round($nutzwert) < 1 ? 1 : round($nutzwert); - $html .= Html::td($nutzwert, 'center bl br'); + $flaeche = $komponente['flaeche'] * $komponente['faktor']; + $html .= Html::td(number_format($flaeche, 3, ',', '.'), 'right bl'); + $tmp = round($flaeche) < 1 ? 1 : round($flaeche); + $html .= Html::td($tmp, 'center bl br'); + $nutzwert += $tmp; $html .= ''; } } diff --git a/app/Actions/Generate/Utilities/Html.php b/app/Actions/Generate/Utilities/Html.php index 3cb243f..346bbc9 100644 --- a/app/Actions/Generate/Utilities/Html.php +++ b/app/Actions/Generate/Utilities/Html.php @@ -19,8 +19,10 @@ class Html public static function table_footer($nutzwert_summe, $colspan = 12) { + $colspan--; $html = ''; - $html .= ''; + $html .= ''; + $html .= ''; $html .= ''; $html .= ''; diff --git a/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php b/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php index 716f11f..7af68b0 100644 --- a/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php +++ b/app/Filament/Resources/Projektes/Schemas/ProjekteForm.php @@ -11,6 +11,7 @@ use Filament\Forms\Components\Radio; use Filament\Forms\Components\RichEditor; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; +use Filament\Forms\Components\Toggle; use Filament\Schemas\Components\Section; use Filament\Schemas\Components\Tabs; use Filament\Schemas\Components\Tabs\Tab; @@ -112,13 +113,24 @@ class ProjekteForm Tab::make('Farben') ->icon('phosphor-palette') ->schema([ + Toggle::make('projekt_farben_verwenden') + ->label('Eigene Farben verwenden') + ->afterStateUpdated(function ($record, ?string $state) { + $state = $state ? 0 : 1; + Projekte::where('id', $record->id)->update(['projekt_farben_verwenden' => $state]); + }) + ->belowContent('Die standard Farben können unter Verwaltung/Gutachter definiert werden.') + ->live(), ColorPicker::make('deckblatt_bg')->label('Deckblatt') + ->disabled(fn ($record) => ! $record->projekt_farben_verwenden) ->belowContent('Farbe des Hintergrundes am Deckblatt.'), ColorPicker::make('schmuckfarbe_header')->label('Überschriften') + ->disabled(fn ($record) => ! $record->projekt_farben_verwenden) ->belowContent('Farbe des Hintergrundes bei Überschriften.'), ColorPicker::make('farbe_borders')->label('Rahmen') + ->disabled(fn ($record) => ! $record->projekt_farben_verwenden) ->belowContent('Farbe von Rahmen und Rändern bei Tabellen und Boxen.'), - ])->columns(3) + ])->columns(4) ->columnSpanFull(), ]), diff --git a/app/Models/Gutachter.php b/app/Models/Gutachter.php index 9e0340b..dd3d822 100644 --- a/app/Models/Gutachter.php +++ b/app/Models/Gutachter.php @@ -23,6 +23,9 @@ class Gutachter extends Model 'logo', 'logo_align', 'logo_height', + 'deckblatt_bg', + 'schmuckfarbe_header', + 'farbe_borders', 'referenz_formatting', 'digitale_signatur_stempel', 'logo_anzeigen', diff --git a/app/Models/Projekte.php b/app/Models/Projekte.php index 8c89ae0..ccb2436 100644 --- a/app/Models/Projekte.php +++ b/app/Models/Projekte.php @@ -17,6 +17,7 @@ class Projekte extends Model 'beschreibung', 'erstellung', 'status', + 'projekt_farben_verwenden', 'deckblatt_bg', 'schmuckfarbe_header', 'farbe_borders', @@ -34,6 +35,7 @@ class Projekte extends Model return [ 'bezahlt_am' => 'datetime', 'evaluation_gutachten' => 'boolean', + 'projekt_farben_verwenden' => 'boolean', ]; } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 6b8789e..bda577a 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -45,7 +45,7 @@ class AppServiceProvider extends ServiceProvider 'primary' => Color::Blue, 'success' => Color::Green, 'warning' => Color::Yellow, - 'info' => Color::Indigo, + 'info' => Color::Gray, ]); FilamentView::registerRenderHook( diff --git a/bootstrap/cache/routes-v7.php b/bootstrap/cache/routes-v7.php index e5533c1..e4c670d 100644 --- a/bootstrap/cache/routes-v7.php +++ b/bootstrap/cache/routes-v7.php @@ -531,7 +531,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::gyuOkwPzWA9uKnmQ', + '_route' => 'generated::5BJWNQ8gpVm7tDhl', ), 1 => NULL, 2 => @@ -551,7 +551,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::F2qfHMTG8Dbgmj2K', + '_route' => 'generated::W9u3yRB1LqoJQS2J', ), 1 => NULL, 2 => @@ -609,7 +609,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::D3qvVMn2AokSMqDW', + '_route' => 'generated::fkCjP31YGbY5G6dv', ), 1 => NULL, 2 => @@ -629,7 +629,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::NiBxfTXvQWugg7Fc', + '_route' => 'generated::yEt0equZ5XgruA0H', ), 1 => NULL, 2 => @@ -649,7 +649,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::a3qQSrhLLVMANh6r', + '_route' => 'generated::OISNadFLEyszoJW4', ), 1 => NULL, 2 => @@ -669,7 +669,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::hyfx57nLCUeXXZF4', + '_route' => 'generated::B6UAPlq6gj1zObUV', ), 1 => NULL, 2 => @@ -689,7 +689,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::57sy5sfX1bMcy03J', + '_route' => 'generated::UQXbzaRGtwxEyPnS', ), 1 => NULL, 2 => @@ -2757,7 +2757,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::gyuOkwPzWA9uKnmQ' => + 'generated::5BJWNQ8gpVm7tDhl' => array ( 'methods' => array ( @@ -2769,7 +2769,7 @@ app('router')->setCompiledRoutes( array ( 'uses' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@returnJavaScriptAsFile', 'controller' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@returnJavaScriptAsFile', - 'as' => 'generated::gyuOkwPzWA9uKnmQ', + 'as' => 'generated::5BJWNQ8gpVm7tDhl', ), 'fallback' => false, 'defaults' => @@ -2785,7 +2785,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::F2qfHMTG8Dbgmj2K' => + 'generated::W9u3yRB1LqoJQS2J' => array ( 'methods' => array ( @@ -2797,7 +2797,7 @@ app('router')->setCompiledRoutes( array ( 'uses' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@maps', 'controller' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@maps', - 'as' => 'generated::F2qfHMTG8Dbgmj2K', + 'as' => 'generated::W9u3yRB1LqoJQS2J', ), 'fallback' => false, 'defaults' => @@ -2899,7 +2899,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::D3qvVMn2AokSMqDW' => + 'generated::fkCjP31YGbY5G6dv' => array ( 'methods' => array ( @@ -2928,7 +2928,7 @@ app('router')->setCompiledRoutes( \'exception\' => $exception, ]), status: $exception ? 500 : 200); }";s:5:"scope";s:54:"Illuminate\\Foundation\\Configuration\\ApplicationBuilder";s:4:"this";N;s:4:"self";s:32:"0000000000002af60000000000000000";}}', - 'as' => 'generated::D3qvVMn2AokSMqDW', + 'as' => 'generated::fkCjP31YGbY5G6dv', ), 'fallback' => false, 'defaults' => @@ -2944,7 +2944,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::NiBxfTXvQWugg7Fc' => + 'generated::yEt0equZ5XgruA0H' => array ( 'methods' => array ( @@ -2966,7 +2966,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::NiBxfTXvQWugg7Fc', + 'as' => 'generated::yEt0equZ5XgruA0H', ), 'fallback' => false, 'defaults' => @@ -2982,7 +2982,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::a3qQSrhLLVMANh6r' => + 'generated::OISNadFLEyszoJW4' => array ( 'methods' => array ( @@ -3004,7 +3004,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::a3qQSrhLLVMANh6r', + 'as' => 'generated::OISNadFLEyszoJW4', ), 'fallback' => false, 'defaults' => @@ -3020,7 +3020,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::hyfx57nLCUeXXZF4' => + 'generated::B6UAPlq6gj1zObUV' => array ( 'methods' => array ( @@ -3042,7 +3042,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::hyfx57nLCUeXXZF4', + 'as' => 'generated::B6UAPlq6gj1zObUV', ), 'fallback' => false, 'defaults' => @@ -3058,7 +3058,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::57sy5sfX1bMcy03J' => + 'generated::UQXbzaRGtwxEyPnS' => array ( 'methods' => array ( @@ -3080,7 +3080,7 @@ app('router')->setCompiledRoutes( 'where' => array ( ), - 'as' => 'generated::57sy5sfX1bMcy03J', + 'as' => 'generated::UQXbzaRGtwxEyPnS', ), 'fallback' => false, 'defaults' => diff --git a/database/migrations/2025_09_24_131440_create_projektes_table.php b/database/migrations/2025_09_24_131440_create_projektes_table.php index 98dfd9e..7d8ab95 100644 --- a/database/migrations/2025_09_24_131440_create_projektes_table.php +++ b/database/migrations/2025_09_24_131440_create_projektes_table.php @@ -22,6 +22,7 @@ return new class extends Migration $table->text('beschreibung')->nullable(); $table->string('erstellung')->nullable(); $table->string('status')->default('entwurf'); + $table->boolean('projekt_farben_verwenden')->default(0)->nullable(); $table->string('deckblatt_bg')->nullable(); $table->string('schmuckfarbe_header')->nullable(); $table->string('farbe_borders')->nullable(); diff --git a/public/storage b/public/storage index c5aab61..2935def 120000 --- a/public/storage +++ b/public/storage @@ -1 +1 @@ -/Users/salam/Sites/nutzwerte_fi4/storage/app/public \ No newline at end of file +/Users/hermanntelser/Sites/nutzwerte_fi4/storage/app/public \ No newline at end of file diff --git a/resources/css/pdf-download.css b/resources/css/pdf-download.css index 5ff1a3a..dd9be48 100644 --- a/resources/css/pdf-download.css +++ b/resources/css/pdf-download.css @@ -56,16 +56,13 @@ body { overflow: hidden; } - - - /** FORMATTING */ .header { padding: 1.5mm 3mm; margin: 11mm auto 5mm; font-size: 14px; - border: 0.3mm solid '###FARBE_RAHMEN###'; - background-color: '###BG_HEADER###'; + border: 0.1mm solid '###FARBE_RAHMEN###'; + background: '###BG_HEADER###'; font-size: 11.5pt; } @@ -234,21 +231,21 @@ th { } .border { - border: 0.3mm solid '###FARBE_RAHMEN###'; + border: 0.1mm solid '###FARBE_RAHMEN###'; } .bt { - border-top: 0.3mm solid '###FARBE_RAHMEN###'; + border-top: 0.1mm solid '###FARBE_RAHMEN###'; } .bb { - border-bottom: 0.3mm solid '###FARBE_RAHMEN###'; + border-bottom: 0.1mm solid '###FARBE_RAHMEN###'; } .bl { - border-left: 0.3mm solid '###FARBE_RAHMEN###'; + border-left: 0.1mm solid '###FARBE_RAHMEN###'; } .br { - border-right: 0.3mm solid '###FARBE_RAHMEN###'; + border-right: 0.1mm solid '###FARBE_RAHMEN###'; } \ No newline at end of file
Top Nr.GeschoßRaumartFlächeNutzwertGeschoßRaumartFlächeNutzwert
Nutzwert gerundetNutzwert gerundet'.$nutzwert_summe.'