Compare commits
2 Commits
a1df61f8fb
...
feature/ad
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5d029221db | ||
|
|
21a6b7da8c |
14
README.md
14
README.md
@@ -57,3 +57,17 @@ Angular CLI does not come with an end-to-end testing framework by default. You c
|
||||
## Additional Resources
|
||||
|
||||
For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
|
||||
|
||||
|
||||
## Cheat sheet
|
||||
|
||||
### Create new component
|
||||
|
||||
```bash
|
||||
ng generate c pages/immo-manager/billing
|
||||
|
||||
CREATE src/app/pages/immo-manager/billing/billing.scss (0 bytes)
|
||||
CREATE src/app/pages/immo-manager/billing/billing.spec.ts (535 bytes)
|
||||
CREATE src/app/pages/immo-manager/billing/billing.ts (190 bytes)
|
||||
CREATE src/app/pages/immo-manager/billing/billing.html (22 bytes)
|
||||
```
|
||||
|
||||
@@ -19,35 +19,35 @@ export const appRoutes: Routes = [
|
||||
children: [
|
||||
{
|
||||
path: '', component: Dashboard,
|
||||
// data: { role: ['admin', 'can-view-dashboard'] }, canActivate: [canActivateAuthRole]
|
||||
// data: { role: ['dev', 'admin', 'can-view-dashboard'] }, canActivate: [canActivateAuthRole]
|
||||
},
|
||||
|
||||
{
|
||||
path: 'projects', component: Projects,
|
||||
data: { role: ['admin', 'can-view-projects'] }, canActivate: [canActivateAuthRole]
|
||||
data: { role: ['dev', 'admin', 'can-view-projects'] }, canActivate: [canActivateAuthRole]
|
||||
},
|
||||
{
|
||||
path: 'projects/:id', component: ProjectDetails,
|
||||
data: { role: ['admin', 'can-view-projects'] }, canActivate: [canActivateAuthRole]
|
||||
data: { role: ['dev', 'admin', 'can-view-projects'] }, canActivate: [canActivateAuthRole]
|
||||
},
|
||||
|
||||
{
|
||||
path: 'contacts', component: Contacts,
|
||||
data: { role: ['admin', 'can-view-contacts'] }, canActivate: [canActivateAuthRole]
|
||||
data: { role: ['dev', 'admin', 'can-view-contacts'] }, canActivate: [canActivateAuthRole]
|
||||
},
|
||||
|
||||
// admin pages
|
||||
{
|
||||
path: 'properties', component: Properties,
|
||||
data: { role: ['admin', 'can-view-properties'] }, canActivate: [canActivateAuthRole]
|
||||
data: { role: ['dev', 'admin', 'can-view-properties'] }, canActivate: [canActivateAuthRole]
|
||||
},
|
||||
{
|
||||
path: 'properties/:id', component: PropertyDetails,
|
||||
data: { role: ['admin', 'can-view-properties'] }, canActivate: [canActivateAuthRole]
|
||||
data: { role: ['dev', 'admin', 'can-view-properties'] }, canActivate: [canActivateAuthRole]
|
||||
},
|
||||
{
|
||||
path: 'admin/properties', component: PropertyManager,
|
||||
data: { role: ['admin', 'can-manage-properties'] }, canActivate: [canActivateAuthRole]
|
||||
data: { role: ['dev', 'admin', 'can-manage-properties'] }, canActivate: [canActivateAuthRole]
|
||||
},
|
||||
|
||||
{ path: 'uikit', loadChildren: () => import('./app/pages/uikit/uikit.routes') },
|
||||
|
||||
@@ -45,9 +45,24 @@ export class AppMenu {
|
||||
items: [
|
||||
{ label: 'Dashboard', icon: 'pi pi-fw pi-home', routerLink: ['/'] },
|
||||
{ label: 'Projekte', icon: 'pi pi-fw pi-list', routerLink: ['/projects'], roles: ['dev', 'admin', 'can-view-projects'] },
|
||||
{ label: 'Organisationen', icon: 'pi pi-fw pi-list', routerLink: ['/organizations'], roles: ['dev', 'admin', 'can-view-organizations'] },
|
||||
{ label: 'Kontakte', icon: 'pi pi-fw pi-id-card', routerLink: ['/contacts'], roles: ['dev', 'admin', 'can-view-contacts'] }
|
||||
]
|
||||
},
|
||||
{
|
||||
roles: ['dev', 'real_estate_agent'],
|
||||
label: 'Immo Manager',
|
||||
items: [
|
||||
{ label: 'Kontaktverwaltung', icon: 'pi pi-fw pi-list', routerLink: ['/immo-manager/contacts'], roles: ['dev', 'admin', 'can-view-projects'] },
|
||||
{ label: 'Objektverwaltung', icon: 'pi pi-fw pi-id-card', routerLink: ['/immo-manager/objects'], roles: ['dev', 'admin', 'can-view-contacts'] },
|
||||
{ label: 'Abrechnungen & Auswertung', icon: 'pi pi-fw pi-id-card', routerLink: ['/immo-manager/billing'], roles: ['dev', 'admin', 'can-view-contacts'] },
|
||||
{ label: 'Ticketsystem', icon: 'pi pi-fw pi-id-card', routerLink: ['/immo-manager/ticket-system'], roles: ['dev', 'admin', 'can-view-contacts'] },
|
||||
{ label: 'Buchhaltung & Rechnungswesen', icon: 'pi pi-fw pi-id-card', routerLink: ['/immo-manager/accounting'], roles: ['dev', 'admin', 'can-view-contacts'] },
|
||||
{ label: 'Effizienz-Features', icon: 'pi pi-fw pi-id-card', routerLink: ['/immo-manager/efficiency-features'], roles: ['dev', 'admin', 'can-view-contacts'] },
|
||||
{ label: 'Dokumenten-Management-System', icon: 'pi pi-fw pi-id-card', routerLink: ['/immo-manager/dms'], roles: ['dev', 'admin', 'can-view-contacts'] },
|
||||
{ label: 'Service-Portal', icon: 'pi pi-fw pi-id-card', routerLink: ['/immo-manager/service-portal'], roles: ['dev', 'admin', 'can-view-contacts'] }
|
||||
]
|
||||
},
|
||||
{
|
||||
roles: ['dev', 'admin'],
|
||||
label: 'Admin',
|
||||
|
||||
@@ -47,9 +47,12 @@ import { Tag } from 'primeng/tag';
|
||||
|
||||
@if (keycloak.authenticated) {
|
||||
<p-tag severity="success" value="Authenticated" />
|
||||
@if(keycloak) {
|
||||
<p-tag severity="info" value="Realm: {{ keycloak.realm }}" />
|
||||
}
|
||||
|
||||
@for (item of keycloak.realmAccess?.roles; track $index) {
|
||||
<p-tag severity="info" value="{{ item }}" />
|
||||
<p-tag severity="warn" value="{{ item }}" />
|
||||
}
|
||||
}
|
||||
@if (!keycloak.authenticated) {
|
||||
@@ -104,17 +107,13 @@ import { Tag } from 'primeng/tag';
|
||||
@if (loggedIn) {
|
||||
<div>
|
||||
Logged in as <span
|
||||
class="font-medium text-surface-900 dark:text-surface-0 block mb-2">{{ firstName }} {{ lastName }}</span>
|
||||
class="font-medium text-surface-900 dark:text-surface-0 block mb-2">{{ firstName }} {{ lastName }} <{{ email }}></span>
|
||||
</div>
|
||||
<div>
|
||||
<p-button icon="pi pi-sign-out" label="Logout" severity="danger"
|
||||
(click)="logout()" />
|
||||
</div>
|
||||
}
|
||||
<div>
|
||||
<span class="font-medium text-surface-900 dark:text-surface-0 block mb-2">Team Members</span>
|
||||
...
|
||||
</div>
|
||||
</div>
|
||||
</p-popover>
|
||||
</div>
|
||||
@@ -130,14 +129,18 @@ export class AppTopbar {
|
||||
public loggedIn: boolean = false;
|
||||
public firstName?: string = 'unknown';
|
||||
public lastName?: string = 'unknown';
|
||||
public email?: string = 'unknown';
|
||||
|
||||
|
||||
constructor(public layoutService: LayoutService) {
|
||||
if (this.keycloak.authenticated) {
|
||||
// console.log('KC', this.keycloak);
|
||||
this.loggedIn = true;
|
||||
|
||||
this.keycloak.loadUserProfile().then((userProfile) => {
|
||||
this.firstName = userProfile.firstName;
|
||||
this.lastName = userProfile.lastName;
|
||||
this.email = userProfile.email;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<div class="flex">
|
||||
<div class="flex-1 text-left">
|
||||
<div class="mb-5">
|
||||
<h1 i18n>Contacts</h1>
|
||||
<h1 >Contacts</h1>
|
||||
<p class="my-4 text-lg text-gray-500">Verwalten Sie Personen und Organisationen in Ihrem Netzwerk</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex-1 text-right">
|
||||
|
||||
<p-button i18n-label label="Exportieren" class="p-button-outlined">
|
||||
<p-button label="Exportieren" class="p-button-outlined">
|
||||
<span class="flex items-center gap-2">
|
||||
<span class="material-icons !text-base">download</span>
|
||||
</span>
|
||||
</p-button>
|
||||
|
||||
<p-button i18n-label label="Kontakt hinzufügen" class="p-button-outlined ml-4">
|
||||
<p-button label="Kontakt hinzufügen" class="p-button-outlined ml-4">
|
||||
<span class="flex items-center gap-2">
|
||||
<span class="material-icons !text-base">person_add</span>
|
||||
</span>
|
||||
@@ -300,7 +300,7 @@
|
||||
<!-- Content -->
|
||||
<div class="ml-4 flex flex-col">
|
||||
<span class="text-2xl font-bold text-gray-800 leading-none">1</span>
|
||||
<span class="text-sm text-gray-500" i18n>Contacts total</span>
|
||||
<span class="text-sm text-gray-500" >Contacts total</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -315,7 +315,7 @@
|
||||
<!-- Content -->
|
||||
<div class="ml-4 flex flex-col">
|
||||
<span class="text-2xl font-bold text-gray-800 leading-none">0</span>
|
||||
<span class="text-sm text-gray-500" i18n>Persons</span>
|
||||
<span class="text-sm text-gray-500" >Persons</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -330,7 +330,7 @@
|
||||
<!-- Content -->
|
||||
<div class="ml-4 flex flex-col">
|
||||
<span class="text-2xl font-bold text-gray-800 leading-none">0</span>
|
||||
<span class="text-sm text-gray-500" i18n>Organisations</span>
|
||||
<span class="text-sm text-gray-500" >Organisations</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -345,7 +345,7 @@
|
||||
<!-- Content -->
|
||||
<div class="ml-4 flex flex-col">
|
||||
<span class="text-2xl font-bold text-gray-800 leading-none">12</span>
|
||||
<span class="text-sm text-gray-500" i18n>With notes</span>
|
||||
<span class="text-sm text-gray-500" >With notes</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,14 +8,14 @@ import { MenuModule } from 'primeng/menu';
|
||||
imports: [ButtonModule, MenuModule],
|
||||
template: `<div class="card">
|
||||
<div class="flex items-center justify-between mb-6">
|
||||
<div class="font-semibold text-xl" i18n>Letzte Aktivitäten</div>
|
||||
<div class="font-semibold text-xl" >Letzte Aktivitäten</div>
|
||||
<div>
|
||||
<button pButton type="button" icon="pi pi-ellipsis-v" class="p-button-rounded p-button-text p-button-plain" (click)="menu.toggle($event)"></button>
|
||||
<p-menu #menu [popup]="true" [model]="items"></p-menu>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<span class="block text-muted-color font-medium mb-4" i18n>HEUTE</span>
|
||||
<span class="block text-muted-color font-medium mb-4" >HEUTE</span>
|
||||
<ul class="space-y-4 mb-10">
|
||||
<li class="flex items-start mb-10">
|
||||
<div class="w-12 h-12 flex items-center justify-center bg-blue-100 dark:bg-blue-400/10 rounded-full mr-4 shrink-0">
|
||||
@@ -23,9 +23,9 @@ import { MenuModule } from 'primeng/menu';
|
||||
</div>
|
||||
|
||||
<div class="ml-3">
|
||||
<p class="text-gray-800 font-bold">Ereignis "vor Ort Aufnahme " hinzugefügt</p>
|
||||
<p class="text-gray-700 font-medium">Ein neues Ereignis wurde zu Projekt "Heizungsmodernisierung " hinzugefügt</p>
|
||||
<p class="text-gray-500 text-sm">01.09.2025</p>
|
||||
<p class="text-muted-color font-bold">Ereignis "vor Ort Aufnahme " hinzugefügt</p>
|
||||
<p class="text-muted-color font-medium">Ein neues Ereignis wurde zu Projekt "Heizungsmodernisierung " hinzugefügt</p>
|
||||
<p class="text-muted-color text-sm">01.09.2025</p>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@@ -35,14 +35,14 @@ import { MenuModule } from 'primeng/menu';
|
||||
</div>
|
||||
|
||||
<div class="ml-3">
|
||||
<p class="text-gray-800 font-bold">Ereignis "Antrag Bafa iSFP" hinzugefügt</p>
|
||||
<p class="text-gray-700 font-medium">Ein neues Ereignis wurde zu Projekt "Heizungsmodernisierung " hinzugefügt</p>
|
||||
<p class="text-gray-500 text-sm">01.09.2025</p>
|
||||
<p class="text-muted-color font-bold">Ereignis "Antrag Bafa iSFP" hinzugefügt</p>
|
||||
<p class="text-muted-color font-medium">Ein neues Ereignis wurde zu Projekt "Heizungsmodernisierung " hinzugefügt</p>
|
||||
<p class="text-muted-color text-sm">01.09.2025</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<span class="block text-muted-color font-medium mb-4" i18n>GESTERN</span>
|
||||
<span class="block text-muted-color font-medium mb-4" >GESTERN</span>
|
||||
<ul class="p-0 m-0 list-none mb-6">
|
||||
<li class="flex items-start mb-10">
|
||||
<div class="w-12 h-12 flex items-center justify-center bg-blue-100 dark:bg-blue-400/10 rounded-full mr-4 shrink-0">
|
||||
@@ -50,14 +50,14 @@ import { MenuModule } from 'primeng/menu';
|
||||
</div>
|
||||
|
||||
<div class="ml-3">
|
||||
<p class="text-gray-800 font-bold">Eier gekrault</p>
|
||||
<p class="text-gray-700 font-medium">kwt</p>
|
||||
<p class="text-gray-500 text-sm">01.09.2025</p>
|
||||
<p class="text-muted-color font-bold">Eier gekrault</p>
|
||||
<p class="text-muted-color font-medium">kwt</p>
|
||||
<p class="text-muted-color text-sm">01.09.2025</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<span class="block text-muted-color font-medium mb-4" i18n>LETZTE WOCHE</span>
|
||||
<span class="block text-muted-color font-medium mb-4" >LETZTE WOCHE</span>
|
||||
<ul class="p-0 m-0 list-none">
|
||||
<li class="flex items-start mb-10">
|
||||
<div class="w-12 h-12 flex items-center justify-center bg-blue-100 dark:bg-blue-400/10 rounded-full mr-4 shrink-0">
|
||||
@@ -65,9 +65,9 @@ import { MenuModule } from 'primeng/menu';
|
||||
</div>
|
||||
|
||||
<div class="ml-3">
|
||||
<p class="text-gray-800 font-bold">Lorem Ipsum</p>
|
||||
<p class="text-gray-700 font-medium">yadda yadda yadda</p>
|
||||
<p class="text-gray-500 text-sm">01.09.2025</p>
|
||||
<p class="text-muted-color font-bold">Lorem Ipsum</p>
|
||||
<p class="text-muted-color font-medium">yadda yadda yadda</p>
|
||||
<p class="text-muted-color text-sm">01.09.2025</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -12,7 +12,7 @@ import { ProgressBar } from 'primeng/progressbar';
|
||||
template: `
|
||||
<div class="card">
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<div class="font-semibold text-xl" i18n>Aktuelle Projekte</div>
|
||||
<div class="font-semibold text-xl" >Aktuelle Projekte</div>
|
||||
<div>
|
||||
<button pButton type="button" icon="pi pi-ellipsis-v"
|
||||
class="p-button-rounded p-button-text p-button-plain"
|
||||
@@ -38,13 +38,13 @@ import { ProgressBar } from 'primeng/progressbar';
|
||||
<ng-template #icons>
|
||||
<p-button icon="pi pi-cog" severity="secondary" rounded text (click)="menu.toggle($event)" />
|
||||
<p-menu #menu id="config_menu" [model]="items" [popup]="true" />
|
||||
<p-button i18n-label label="Vorbereitung" variant="text" severity="info" [rounded]="true" size="small"/>
|
||||
<p-button label="Vorbereitung" variant="text" severity="info" [rounded]="true" size="small"/>
|
||||
</ng-template>
|
||||
<p class="m-0">
|
||||
<span class="text-surface-500 dark:text-surface-400"><i class="pi pi-map-marker"></i> Nicht-Wohngebäude mit Mischnutzung</span>
|
||||
</p>
|
||||
<p>
|
||||
<span i18n>Fortschritt:</span>
|
||||
<span >Fortschritt:</span>
|
||||
<p-progress-bar [value]="25"></p-progress-bar>
|
||||
</p>
|
||||
</p-panel>
|
||||
|
||||
@@ -9,35 +9,35 @@ import { CommonModule } from '@angular/common';
|
||||
<div class="card mb-0">
|
||||
<div class="flex justify-between mb-4">
|
||||
<div>
|
||||
<span class="min-h-10 block text-muted-color font-medium mb-4" i18n>Gebäude verwaltet</span>
|
||||
<span class="min-h-10 block text-muted-color font-medium mb-4">Gebäude verwaltet</span>
|
||||
<div class="text-surface-900 dark:text-surface-0 font-medium text-xl">152</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-center bg-blue-100 dark:bg-blue-400/10 rounded-border" style="width: 2.5rem; height: 2.5rem">
|
||||
<i class="pi pi-home text-blue-500 text-xl!"></i>
|
||||
</div>
|
||||
</div>
|
||||
<span class="text-muted-color" i18n>Gesamt im Portfolio</span>
|
||||
<span class="text-muted-color">Gesamt im Portfolio</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-span-12 lg:col-span-6 xl:col-span-3">
|
||||
<div class="card mb-0">
|
||||
<div class="flex justify-between mb-4">
|
||||
<div>
|
||||
<span class="min-h-10 block text-muted-color font-medium mb-4" i18n>Aktive Projekte</span>
|
||||
<span class="min-h-10 block text-muted-color font-medium mb-4">Aktive Projekte</span>
|
||||
<div class="text-surface-900 dark:text-surface-0 font-medium text-xl">12</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-center bg-orange-100 dark:bg-orange-400/10 rounded-border" style="width: 2.5rem; height: 2.5rem">
|
||||
<i class="pi pi-wrench text-orange-500 text-xl!"></i>
|
||||
</div>
|
||||
</div>
|
||||
<span class="text-muted-color" i18n>von 73 insgesamt</span>
|
||||
<span class="text-muted-color">von 73 insgesamt</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-span-12 lg:col-span-6 xl:col-span-3">
|
||||
<div class="card mb-0">
|
||||
<div class="flex justify-between mb-4">
|
||||
<div>
|
||||
<span class="min-h-10 block text-muted-color font-medium mb-4" i18n>Kontakte</span>
|
||||
<span class="min-h-10 block text-muted-color font-medium mb-4">Kontakte</span>
|
||||
<div class="text-surface-900 dark:text-surface-0 font-medium text-xl">28441</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-center bg-cyan-100 dark:bg-cyan-400/10 rounded-border" style="width: 2.5rem; height: 2.5rem">
|
||||
@@ -51,14 +51,14 @@ import { CommonModule } from '@angular/common';
|
||||
<div class="card mb-0">
|
||||
<div class="flex justify-between mb-4">
|
||||
<div>
|
||||
<span class="min-h-10 block text-muted-color font-medium mb-4" i18n>Projekte abgeschlossen</span>
|
||||
<span class="min-h-10 block text-muted-color font-medium mb-4">Projekte abgeschlossen</span>
|
||||
<div class="text-surface-900 dark:text-surface-0 font-medium text-xl">152</div>
|
||||
</div>
|
||||
<div class="flex items-center justify-center bg-purple-100 dark:bg-purple-400/10 rounded-border" style="width: 2.5rem; height: 2.5rem">
|
||||
<i class="pi pi-list-check text-purple-500 text-xl!"></i>
|
||||
</div>
|
||||
</div>
|
||||
<span class="text-muted-color" i18n>Erfolgreich beendet</span>
|
||||
<span class="text-muted-color">Erfolgreich beendet</span>
|
||||
</div>
|
||||
</div>`
|
||||
})
|
||||
|
||||
@@ -8,7 +8,7 @@ import { CurrentProjectsWidget } from './components/current-projects-widget.comp
|
||||
imports: [StatsWidget, CurrentProjectsWidget, ActivitiesWidget],
|
||||
template: `
|
||||
<div class="mb-5">
|
||||
<h1 i18n>Dashboard</h1>
|
||||
<h1 >Dashboard</h1>
|
||||
<p class="my-4 text-lg text-gray-500">Willkommen zurück! Hier ist ein Überblick über Ihr Portfolio.</p>
|
||||
</div>
|
||||
|
||||
|
||||
1
src/app/pages/immo-manager/billing/billing.html
Normal file
1
src/app/pages/immo-manager/billing/billing.html
Normal file
@@ -0,0 +1 @@
|
||||
<p>billing works!</p>
|
||||
0
src/app/pages/immo-manager/billing/billing.scss
Normal file
0
src/app/pages/immo-manager/billing/billing.scss
Normal file
23
src/app/pages/immo-manager/billing/billing.spec.ts
Normal file
23
src/app/pages/immo-manager/billing/billing.spec.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { Billing } from './billing';
|
||||
|
||||
describe('Billing', () => {
|
||||
let component: Billing;
|
||||
let fixture: ComponentFixture<Billing>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [Billing]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(Billing);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
11
src/app/pages/immo-manager/billing/billing.ts
Normal file
11
src/app/pages/immo-manager/billing/billing.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-billing',
|
||||
imports: [],
|
||||
templateUrl: './billing.html',
|
||||
styleUrl: './billing.scss'
|
||||
})
|
||||
export class Billing {
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
<div class="flex flex-wrap items-center justify-between gap-4">
|
||||
<div class="flex items-center gap-2">
|
||||
<div class="mb-5">
|
||||
<h1 i18n>Projekt Details</h1>
|
||||
<h1 >Projekt Details</h1>
|
||||
<h4>{{ projectDetailsDTO?.name }}</h4>
|
||||
<p class="my-4 text-lg text-gray-500">Erstellt: {{ projectDetailsDTO?.createdAt | date: 'dd.MM.yyyy HH:mm' }}</p>
|
||||
</div>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<p-toolbar styleClass="mb-6">
|
||||
<ng-template #start>
|
||||
<p-button i18n-label label="Neu" icon="pi pi-plus" severity="secondary" class="mr-2" (onClick)="openNew()" />
|
||||
<p-button i18n-label label="Löschen" icon="pi pi-trash" severity="danger" outlined (onClick)="deleteSelected()" [disabled]="!selectedProperties || !selectedProperties.length" />
|
||||
<p-button label="Neu" icon="pi pi-plus" severity="secondary" class="mr-2" (onClick)="openNew()" />
|
||||
<p-button label="Löschen" icon="pi pi-trash" severity="danger" outlined (onClick)="deleteSelected()" [disabled]="!selectedProperties || !selectedProperties.length" />
|
||||
</ng-template>
|
||||
|
||||
<ng-template #end>
|
||||
<p-button i18n-label label="Exportieren" icon="pi pi-upload" severity="secondary" (onClick)="exportCSV()" />
|
||||
<p-button label="Exportieren" icon="pi pi-upload" severity="secondary" (onClick)="exportCSV()" />
|
||||
</ng-template>
|
||||
</p-toolbar>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
>
|
||||
<ng-template #caption>
|
||||
<div class="flex items-center justify-between">
|
||||
<h5 class="m-0" i18n>Verwalte Liegenschaften</h5>
|
||||
<h5 class="m-0" >Verwalte Liegenschaften</h5>
|
||||
<p-iconfield>
|
||||
<p-inputicon styleClass="pi pi-search" />
|
||||
<input pInputText type="text" (input)="onGlobalFilter(dt, $event)" i18n-placeholder placeholder="Suche..." />
|
||||
@@ -39,39 +39,39 @@
|
||||
<th style="width: 3rem">
|
||||
<p-tableHeaderCheckbox />
|
||||
</th>
|
||||
<th pSortableColumn="nr" style="min-width:8rem" i18n>
|
||||
<th pSortableColumn="nr" style="min-width:8rem" >
|
||||
Nr.
|
||||
<p-sortIcon field="nr" />
|
||||
</th>
|
||||
<th pSortableColumn="name" style="min-width:8rem" i18n>
|
||||
<th pSortableColumn="name" style="min-width:8rem" >
|
||||
Name
|
||||
<p-sortIcon field="name" />
|
||||
</th>
|
||||
<th pSortableColumn="owner" style="min-width:8rem" i18n>
|
||||
<th pSortableColumn="owner" style="min-width:8rem" >
|
||||
Eigentümer
|
||||
<p-sortIcon field="owner" />
|
||||
</th>
|
||||
<th pSortableColumn="street" style="min-width: 8rem" i18n>
|
||||
<th pSortableColumn="street" style="min-width: 8rem" >
|
||||
Straße
|
||||
<p-sortIcon field="street" />
|
||||
</th>
|
||||
<th pSortableColumn="houseNumber" style="min-width:8rem" i18n>
|
||||
<th pSortableColumn="houseNumber" style="min-width:8rem" >
|
||||
Hausnummer
|
||||
<p-sortIcon field="houseNumber" />
|
||||
</th>
|
||||
<th pSortableColumn="zipCode" style="min-width: 12rem" i18n>
|
||||
<th pSortableColumn="zipCode" style="min-width: 12rem" >
|
||||
Postleitzahl
|
||||
<p-sortIcon field="zipCode" />
|
||||
</th>
|
||||
<th pSortableColumn="city" style="min-width: 12rem" i18n>
|
||||
<th pSortableColumn="city" style="min-width: 12rem" >
|
||||
Stadt
|
||||
<p-sortIcon field="city" />
|
||||
</th>
|
||||
<th pSortableColumn="bundesland" style="min-width:8rem" i18n>
|
||||
<th pSortableColumn="bundesland" style="min-width:8rem" >
|
||||
Bundesland
|
||||
<p-sortIcon field="bundesland" />
|
||||
</th>
|
||||
<th pSortableColumn="Einheiten" style="min-width:8rem" i18n>
|
||||
<th pSortableColumn="Einheiten" style="min-width:8rem" >
|
||||
Einheiten
|
||||
<p-sortIcon field="Einheiten" />
|
||||
</th>
|
||||
@@ -244,8 +244,8 @@
|
||||
</ng-template>
|
||||
|
||||
<ng-template #footer>
|
||||
<p-button i18n-label label="Abbrechen" icon="pi pi-times" text (click)="hideDialog()" />
|
||||
<p-button i18n-label label="Speichern" icon="pi pi-check" (click)="saveProperty()" />
|
||||
<p-button label="Abbrechen" icon="pi pi-times" text (click)="hideDialog()" />
|
||||
<p-button label="Speichern" icon="pi pi-check" (click)="saveProperty()" />
|
||||
</ng-template>
|
||||
</p-dialog>
|
||||
|
||||
|
||||
@@ -26,14 +26,13 @@ body {
|
||||
// Default the application to a light color theme. This can be changed to
|
||||
// `dark` to enable the dark color theme, or to `light dark` to defer to the
|
||||
// user's system settings.
|
||||
color-scheme: light;
|
||||
color-scheme: dark;
|
||||
|
||||
// Set a default background, font and text colors for the application using
|
||||
// Angular Material's system-level CSS variables. Learn more about these
|
||||
// variables at https://material.angular.dev/guide/system-variables
|
||||
background-color: var(--mat-sys-surface);
|
||||
color: var(--mat-sys-on-surface);
|
||||
font: var(--mat-sys-body-medium);
|
||||
background-color: var(--surface-ground);
|
||||
color: var(--text-color);
|
||||
|
||||
// Reset the user agent margin.
|
||||
margin: 0;
|
||||
|
||||
@@ -3,7 +3,6 @@ const keycloakBaseUrl = 'https://auth.dev.localhost';
|
||||
const keycloakRealm = 'skamp';
|
||||
const keycloakClientId = 'skamp-app';
|
||||
|
||||
|
||||
export const environment = {
|
||||
production: false,
|
||||
bearerTokenUrlCondition: `^(${apiBaseUrl})(/.*)?$`,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const apiBaseUrl = 'http://localhost:8080';
|
||||
const keycloakBaseUrl = 'http://localhost:8280';
|
||||
const apiBaseUrl = 'http://localhost:8180';
|
||||
const keycloakBaseUrl = 'https://kc.dev.localhost';
|
||||
const keycloakRealm = 'skamp';
|
||||
const keycloakClientId = 'skamp-app';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user