diff --git a/README.md b/README.md index cc4588f..b3e34a6 100644 --- a/README.md +++ b/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 app/immo-manager/billing + +CREATE src/app/app/immo-manager/billing/billing.scss (0 bytes) +CREATE src/app/app/immo-manager/billing/billing.spec.ts (535 bytes) +CREATE src/app/app/immo-manager/billing/billing.ts (190 bytes) +CREATE src/app/app/immo-manager/billing/billing.html (22 bytes) +``` diff --git a/src/app.routes.ts b/src/app.routes.ts index a742123..fd038f9 100644 --- a/src/app.routes.ts +++ b/src/app.routes.ts @@ -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') }, diff --git a/src/app/app/immo-manager/billing/billing.html b/src/app/app/immo-manager/billing/billing.html new file mode 100644 index 0000000..0a4070f --- /dev/null +++ b/src/app/app/immo-manager/billing/billing.html @@ -0,0 +1 @@ +

billing works!

diff --git a/src/app/app/immo-manager/billing/billing.scss b/src/app/app/immo-manager/billing/billing.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/app/immo-manager/billing/billing.spec.ts b/src/app/app/immo-manager/billing/billing.spec.ts new file mode 100644 index 0000000..6b1b477 --- /dev/null +++ b/src/app/app/immo-manager/billing/billing.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Billing } from './billing'; + +describe('Billing', () => { + let component: Billing; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Billing] + }) + .compileComponents(); + + fixture = TestBed.createComponent(Billing); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/app/immo-manager/billing/billing.ts b/src/app/app/immo-manager/billing/billing.ts new file mode 100644 index 0000000..c41633d --- /dev/null +++ b/src/app/app/immo-manager/billing/billing.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-billing', + imports: [], + templateUrl: './billing.html', + styleUrl: './billing.scss' +}) +export class Billing { + +} diff --git a/src/app/layout/component/app.menu.ts b/src/app/layout/component/app.menu.ts index ed0fff4..9a10131 100644 --- a/src/app/layout/component/app.menu.ts +++ b/src/app/layout/component/app.menu.ts @@ -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', diff --git a/src/app/layout/component/app.topbar.ts b/src/app/layout/component/app.topbar.ts index 204457d..00234af 100644 --- a/src/app/layout/component/app.topbar.ts +++ b/src/app/layout/component/app.topbar.ts @@ -47,9 +47,12 @@ import { Tag } from 'primeng/tag'; @if (keycloak.authenticated) { + @if(keycloak) { + + } @for (item of keycloak.realmAccess?.roles; track $index) { - + } } @if (!keycloak.authenticated) { @@ -104,17 +107,13 @@ import { Tag } from 'primeng/tag'; @if (loggedIn) {
Logged in as {{ firstName }} {{ lastName }} + class="font-medium text-surface-900 dark:text-surface-0 block mb-2">{{ firstName }} {{ lastName }} <{{ email }}>
} -
- Team Members - ... -
@@ -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; }); } } diff --git a/src/app/pages/contacts/contacts.html b/src/app/pages/contacts/contacts.html index c3fdf3d..b90d354 100644 --- a/src/app/pages/contacts/contacts.html +++ b/src/app/pages/contacts/contacts.html @@ -1,20 +1,20 @@
-

Contacts

+

Contacts

Verwalten Sie Personen und Organisationen in Ihrem Netzwerk

- + download - + person_add @@ -300,7 +300,7 @@
1 - Contacts total + Contacts total
@@ -315,7 +315,7 @@
0 - Persons + Persons
@@ -330,7 +330,7 @@
0 - Organisations + Organisations
@@ -345,7 +345,7 @@
12 - With notes + With notes
diff --git a/src/app/pages/dashboard/components/activities-widget.component.ts b/src/app/pages/dashboard/components/activities-widget.component.ts index c707c7e..cac4feb 100644 --- a/src/app/pages/dashboard/components/activities-widget.component.ts +++ b/src/app/pages/dashboard/components/activities-widget.component.ts @@ -8,14 +8,14 @@ import { MenuModule } from 'primeng/menu'; imports: [ButtonModule, MenuModule], template: `
-
Letzte Aktivitäten
+
Letzte Aktivitäten
- HEUTE + HEUTE
  • @@ -23,9 +23,9 @@ import { MenuModule } from 'primeng/menu';
    -

    Ereignis "vor Ort Aufnahme " hinzugefügt

    -

    Ein neues Ereignis wurde zu Projekt "Heizungsmodernisierung " hinzugefügt

    -

    01.09.2025

    +

    Ereignis "vor Ort Aufnahme " hinzugefügt

    +

    Ein neues Ereignis wurde zu Projekt "Heizungsmodernisierung " hinzugefügt

    +

    01.09.2025

  • @@ -35,14 +35,14 @@ import { MenuModule } from 'primeng/menu';
-

Ereignis "Antrag Bafa iSFP" hinzugefügt

-

Ein neues Ereignis wurde zu Projekt "Heizungsmodernisierung " hinzugefügt

-

01.09.2025

+

Ereignis "Antrag Bafa iSFP" hinzugefügt

+

Ein neues Ereignis wurde zu Projekt "Heizungsmodernisierung " hinzugefügt

+

01.09.2025

- GESTERN + GESTERN
  • @@ -50,14 +50,14 @@ import { MenuModule } from 'primeng/menu';
    -

    Eier gekrault

    -

    kwt

    -

    01.09.2025

    +

    Eier gekrault

    +

    kwt

    +

    01.09.2025

- LETZTE WOCHE + LETZTE WOCHE
  • @@ -65,9 +65,9 @@ import { MenuModule } from 'primeng/menu';
    -

    Lorem Ipsum

    -

    yadda yadda yadda

    -

    01.09.2025

    +

    Lorem Ipsum

    +

    yadda yadda yadda

    +

    01.09.2025

diff --git a/src/app/pages/dashboard/components/current-projects-widget.component.ts b/src/app/pages/dashboard/components/current-projects-widget.component.ts index 170a10b..cad9f94 100644 --- a/src/app/pages/dashboard/components/current-projects-widget.component.ts +++ b/src/app/pages/dashboard/components/current-projects-widget.component.ts @@ -12,7 +12,7 @@ import { ProgressBar } from 'primeng/progressbar'; template: `
-
Aktuelle Projekte
+
Aktuelle Projekte
- Aktive Projekte + Aktive Projekte
12
- von 73 insgesamt + von 73 insgesamt
- Kontakte + Kontakte
28441
@@ -51,14 +51,14 @@ import { CommonModule } from '@angular/common';
- Projekte abgeschlossen + Projekte abgeschlossen
152
- Erfolgreich beendet + Erfolgreich beendet
` }) diff --git a/src/app/pages/dashboard/dashboard.ts b/src/app/pages/dashboard/dashboard.ts index 8d24812..7837e7e 100644 --- a/src/app/pages/dashboard/dashboard.ts +++ b/src/app/pages/dashboard/dashboard.ts @@ -8,7 +8,7 @@ import { CurrentProjectsWidget } from './components/current-projects-widget.comp imports: [StatsWidget, CurrentProjectsWidget, ActivitiesWidget], template: `
-

Dashboard

+

Dashboard

Willkommen zurück! Hier ist ein Überblick über Ihr Portfolio.

diff --git a/src/app/pages/project-details/project-details.html b/src/app/pages/project-details/project-details.html index 9fd18ff..85a43f5 100644 --- a/src/app/pages/project-details/project-details.html +++ b/src/app/pages/project-details/project-details.html @@ -1,7 +1,7 @@
-

Projekt Details

+

Projekt Details

{{ projectDetailsDTO?.name }}

Erstellt: {{ projectDetailsDTO?.createdAt | date: 'dd.MM.yyyy HH:mm' }}

diff --git a/src/app/pages/property-manager/property-manager.html b/src/app/pages/property-manager/property-manager.html index a6cbc55..1efa29c 100644 --- a/src/app/pages/property-manager/property-manager.html +++ b/src/app/pages/property-manager/property-manager.html @@ -1,11 +1,11 @@ - - + + - + @@ -26,7 +26,7 @@ >
-
Verwalte Liegenschaften
+
Verwalte Liegenschaften
@@ -39,39 +39,39 @@ - + Nr. - + Name - + Eigentümer - + Straße - + Hausnummer - + Postleitzahl - + Stadt - + Bundesland - + Einheiten @@ -244,8 +244,8 @@ - - + + diff --git a/src/assets/styles.scss b/src/assets/styles.scss index a0b7bbf..0109447 100644 --- a/src/assets/styles.scss +++ b/src/assets/styles.scss @@ -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; diff --git a/src/environments/environments.staging.ts b/src/environments/environments.staging.ts index b5c19f3..1193d41 100644 --- a/src/environments/environments.staging.ts +++ b/src/environments/environments.staging.ts @@ -3,7 +3,6 @@ const keycloakBaseUrl = 'https://auth.dev.localhost'; const keycloakRealm = 'skamp'; const keycloakClientId = 'skamp-app'; - export const environment = { production: false, bearerTokenUrlCondition: `^(${apiBaseUrl})(/.*)?$`, diff --git a/src/environments/environments.ts b/src/environments/environments.ts index 317d6d9..aa3d3ae 100644 --- a/src/environments/environments.ts +++ b/src/environments/environments.ts @@ -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';