add new pages
This commit is contained in:
parent
083badeacc
commit
829aefc514
@ -9,7 +9,6 @@
|
|||||||
"lint": "ng lint",
|
"lint": "ng lint",
|
||||||
"e2e": "ng e2e",
|
"e2e": "ng e2e",
|
||||||
"generate": "python ../helpers/hv2-api/generate.py -s ../helpers/hv2-api/schema.json -t ./src/app/*.tmpl"
|
"generate": "python ../helpers/hv2-api/generate.py -s ../helpers/hv2-api/schema.json -t ./src/app/*.tmpl"
|
||||||
|
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -3,12 +3,19 @@ import { RouterModule, Routes } from '@angular/router';
|
|||||||
import { AuthGuardService } from './auth-guard.service';
|
import { AuthGuardService } from './auth-guard.service';
|
||||||
import { LoginComponent } from './login/login.component';
|
import { LoginComponent } from './login/login.component';
|
||||||
import { LogoutComponent } from './logout/logout.component';
|
import { LogoutComponent } from './logout/logout.component';
|
||||||
import { TestOutputComponent } from './test-output/test-output.component';
|
import { MyTenantsComponent } from './my-tenants/my-tenants.component';
|
||||||
|
import { MyPremisesComponent } from './my-premises/my-premises.component';
|
||||||
|
import { MyFlatsComponent } from './my-flats/my-flats.component';
|
||||||
|
import { MyParkingsComponent } from './my-parkings/my-parkings.component';
|
||||||
|
import { MyCommercialUnitsComponent } from './my-commercial-units/my-commercial-units.component';
|
||||||
|
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{ path: 'test', component: TestOutputComponent, canActivate: [ AuthGuardService ] },
|
{ path: 'tenants', component: MyTenantsComponent, canActivate: [ AuthGuardService ] },
|
||||||
|
{ path: 'premises', component: MyPremisesComponent, canActivate: [ AuthGuardService ] },
|
||||||
|
{ path: 'flats', component: MyFlatsComponent, canActivate: [ AuthGuardService ] },
|
||||||
|
{ path: 'parkings', component: MyParkingsComponent, canActivate: [ AuthGuardService ] },
|
||||||
|
{ path: 'commercialunits', component: MyCommercialUnitsComponent, canActivate: [ AuthGuardService ] },
|
||||||
{ path: 'logout', component: LogoutComponent },
|
{ path: 'logout', component: LogoutComponent },
|
||||||
{ path: 'login', component: LoginComponent }
|
{ path: 'login', component: LoginComponent }
|
||||||
]
|
]
|
||||||
|
@ -22,6 +22,11 @@ import { LoginComponent } from './login/login.component';
|
|||||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
import { MatInputModule } from '@angular/material/input';
|
import { MatInputModule } from '@angular/material/input';
|
||||||
import { MyTenantsComponent } from './my-tenants/my-tenants.component';
|
import { MyTenantsComponent } from './my-tenants/my-tenants.component';
|
||||||
|
import { MatTableModule } from '@angular/material/table';
|
||||||
|
import { MyPremisesComponent } from './my-premises/my-premises.component';
|
||||||
|
import { MyFlatsComponent } from './my-flats/my-flats.component';
|
||||||
|
import { MyParkingsComponent } from './my-parkings/my-parkings.component';
|
||||||
|
import { MyCommercialUnitsComponent } from './my-commercial-units/my-commercial-units.component';
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
@ -32,7 +37,11 @@ import { MyTenantsComponent } from './my-tenants/my-tenants.component';
|
|||||||
TestOutputComponent,
|
TestOutputComponent,
|
||||||
LogoutComponent,
|
LogoutComponent,
|
||||||
LoginComponent,
|
LoginComponent,
|
||||||
MyTenantsComponent
|
MyTenantsComponent,
|
||||||
|
MyPremisesComponent,
|
||||||
|
MyFlatsComponent,
|
||||||
|
MyParkingsComponent,
|
||||||
|
MyCommercialUnitsComponent
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
@ -48,6 +57,7 @@ import { MyTenantsComponent } from './my-tenants/my-tenants.component';
|
|||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
FormsModule,
|
FormsModule,
|
||||||
ReactiveFormsModule,
|
ReactiveFormsModule,
|
||||||
|
MatTableModule,
|
||||||
MatInputModule
|
MatInputModule
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
|
@ -8,6 +8,8 @@ import {
|
|||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { MessageService } from './message.service';
|
import { MessageService } from './message.service';
|
||||||
import { TokenService } from './token.service';
|
import { TokenService } from './token.service';
|
||||||
|
import { serviceBaseUrl } from './config';
|
||||||
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AuthHandlerInterceptor implements HttpInterceptor {
|
export class AuthHandlerInterceptor implements HttpInterceptor {
|
||||||
@ -16,7 +18,7 @@ export class AuthHandlerInterceptor implements HttpInterceptor {
|
|||||||
|
|
||||||
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
|
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
|
||||||
const token = localStorage.getItem(TokenService.Id_Token_Key)
|
const token = localStorage.getItem(TokenService.Id_Token_Key)
|
||||||
if (request.url.includes('api.hv.nober.de') && token) {
|
if (request.url.includes(serviceBaseUrl) && token) {
|
||||||
const clone = request.clone({
|
const clone = request.clone({
|
||||||
setHeaders: { Authorization: `Bearer ${token}`}
|
setHeaders: { Authorization: `Bearer ${token}`}
|
||||||
})
|
})
|
||||||
|
@ -1,2 +1,4 @@
|
|||||||
export const serviceBaseUrl = "https://api.hv.nober.de";
|
// export const serviceBaseUrl = "https://api.hv.nober.de";
|
||||||
// export const serviceBaseUrl = "http://172.16.10.38:5000";
|
// export const serviceBaseUrl = "http://172.16.10.38:5000";
|
||||||
|
export const serviceBaseUrl = "http://localhost:8080";
|
||||||
|
|
||||||
|
@ -28,120 +28,129 @@ import { TenancyFeeMapping } from './data-objects';
|
|||||||
import { AccountEntry } from './data-objects';
|
import { AccountEntry } from './data-objects';
|
||||||
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root'
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class AccountService {
|
export class AccountService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getAccount(): Promise<Account> {
|
async getAccounts(): Promise<Account[]> {
|
||||||
this.messageService.add(`AccountService: fetch data`);
|
this.messageService.add(`AccountService: fetch data`);
|
||||||
return this.http.get<Account>(`${serviceBaseUrl}/v1/account`).toPromise()
|
return this.http.get<Account[]>(`${serviceBaseUrl}/v1/accounts`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class TenantService {
|
export class TenantService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getTenant(): Promise<Tenant> {
|
async getTenants(): Promise<Tenant[]> {
|
||||||
this.messageService.add(`TenantService: fetch data`);
|
this.messageService.add(`TenantService: fetch data`);
|
||||||
return this.http.get<Tenant>(`${serviceBaseUrl}/v1/tenant`).toPromise()
|
return this.http.get<Tenant[]>(`${serviceBaseUrl}/v1/tenants`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class PremiseService {
|
export class PremiseService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getPremise(): Promise<Premise> {
|
async getPremises(): Promise<Premise[]> {
|
||||||
this.messageService.add(`PremiseService: fetch data`);
|
this.messageService.add(`PremiseService: fetch data`);
|
||||||
return this.http.get<Premise>(`${serviceBaseUrl}/v1/premise`).toPromise()
|
return this.http.get<Premise[]>(`${serviceBaseUrl}/v1/premises`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class FlatService {
|
export class FlatService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getFlat(): Promise<Flat> {
|
async getFlats(): Promise<Flat[]> {
|
||||||
this.messageService.add(`FlatService: fetch data`);
|
this.messageService.add(`FlatService: fetch data`);
|
||||||
return this.http.get<Flat>(`${serviceBaseUrl}/v1/flat`).toPromise()
|
return this.http.get<Flat[]>(`${serviceBaseUrl}/v1/flats`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class OverheadAdvanceService {
|
export class OverheadAdvanceService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getOverheadAdvance(): Promise<OverheadAdvance> {
|
async getOverheadAdvances(): Promise<OverheadAdvance[]> {
|
||||||
this.messageService.add(`OverheadAdvanceService: fetch data`);
|
this.messageService.add(`OverheadAdvanceService: fetch data`);
|
||||||
return this.http.get<OverheadAdvance>(`${serviceBaseUrl}/v1/overhead_advance`).toPromise()
|
return this.http.get<OverheadAdvance[]>(`${serviceBaseUrl}/v1/overhead_advances`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class OverheadAdvanceFlatMappingService {
|
export class OverheadAdvanceFlatMappingService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getOverheadAdvanceFlatMapping(): Promise<OverheadAdvanceFlatMapping> {
|
async getOverheadAdvanceFlatMappings(): Promise<OverheadAdvanceFlatMapping[]> {
|
||||||
this.messageService.add(`OverheadAdvanceFlatMappingService: fetch data`);
|
this.messageService.add(`OverheadAdvanceFlatMappingService: fetch data`);
|
||||||
return this.http.get<OverheadAdvanceFlatMapping>(`${serviceBaseUrl}/v1/overhead_advance_flat_mapping`).toPromise()
|
return this.http.get<OverheadAdvanceFlatMapping[]>(`${serviceBaseUrl}/v1/overhead_advance_flat_mappings`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class ParkingService {
|
export class ParkingService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getParking(): Promise<Parking> {
|
async getParkings(): Promise<Parking[]> {
|
||||||
this.messageService.add(`ParkingService: fetch data`);
|
this.messageService.add(`ParkingService: fetch data`);
|
||||||
return this.http.get<Parking>(`${serviceBaseUrl}/v1/parking`).toPromise()
|
return this.http.get<Parking[]>(`${serviceBaseUrl}/v1/parkings`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class CommercialPremiseService {
|
export class CommercialPremiseService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getCommercialPremise(): Promise<CommercialPremise> {
|
async getCommercialPremises(): Promise<CommercialPremise[]> {
|
||||||
this.messageService.add(`CommercialPremiseService: fetch data`);
|
this.messageService.add(`CommercialPremiseService: fetch data`);
|
||||||
return this.http.get<CommercialPremise>(`${serviceBaseUrl}/v1/commercial_premise`).toPromise()
|
return this.http.get<CommercialPremise[]>(`${serviceBaseUrl}/v1/commercial_premises`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class TenancyService {
|
export class TenancyService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getTenancy(): Promise<Tenancy> {
|
async getTenancys(): Promise<Tenancy[]> {
|
||||||
this.messageService.add(`TenancyService: fetch data`);
|
this.messageService.add(`TenancyService: fetch data`);
|
||||||
return this.http.get<Tenancy>(`${serviceBaseUrl}/v1/tenancy`).toPromise()
|
return this.http.get<Tenancy[]>(`${serviceBaseUrl}/v1/tenancys`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class FeeService {
|
export class FeeService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getFee(): Promise<Fee> {
|
async getFees(): Promise<Fee[]> {
|
||||||
this.messageService.add(`FeeService: fetch data`);
|
this.messageService.add(`FeeService: fetch data`);
|
||||||
return this.http.get<Fee>(`${serviceBaseUrl}/v1/fee`).toPromise()
|
return this.http.get<Fee[]>(`${serviceBaseUrl}/v1/fees`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class TenancyFeeMappingService {
|
export class TenancyFeeMappingService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getTenancyFeeMapping(): Promise<TenancyFeeMapping> {
|
async getTenancyFeeMappings(): Promise<TenancyFeeMapping[]> {
|
||||||
this.messageService.add(`TenancyFeeMappingService: fetch data`);
|
this.messageService.add(`TenancyFeeMappingService: fetch data`);
|
||||||
return this.http.get<TenancyFeeMapping>(`${serviceBaseUrl}/v1/tenancy_fee_mapping`).toPromise()
|
return this.http.get<TenancyFeeMapping[]>(`${serviceBaseUrl}/v1/tenancy_fee_mappings`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class AccountEntryService {
|
export class AccountEntryService {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async getAccountEntry(): Promise<AccountEntry> {
|
async getAccountEntrys(): Promise<AccountEntry[]> {
|
||||||
this.messageService.add(`AccountEntryService: fetch data`);
|
this.messageService.add(`AccountEntryService: fetch data`);
|
||||||
return this.http.get<AccountEntry>(`${serviceBaseUrl}/v1/account_entry`).toPromise()
|
return this.http.get<AccountEntry[]>(`${serviceBaseUrl}/v1/account_entrys`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,9 +14,6 @@ import { ${JsNameConverter($table.name)} } from './data-objects';
|
|||||||
#end for
|
#end for
|
||||||
|
|
||||||
|
|
||||||
@Injectable({
|
|
||||||
providedIn: 'root'
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -25,12 +22,13 @@ import { ${JsNameConverter($table.name)} } from './data-objects';
|
|||||||
#from generateHelper import JsNameConverter
|
#from generateHelper import JsNameConverter
|
||||||
|
|
||||||
#for $table in $tables
|
#for $table in $tables
|
||||||
|
@Injectable({ providedIn: 'root' })
|
||||||
export class ${JsNameConverter($table.name)}Service {
|
export class ${JsNameConverter($table.name)}Service {
|
||||||
constructor(private messageService: MessageService, private http: HttpClient) { }
|
constructor(private messageService: MessageService, private http: HttpClient) { }
|
||||||
|
|
||||||
async get${JsNameConverter($table.name)}(): Promise<${JsNameConverter($table.name)}> {
|
async get${JsNameConverter($table.name)}s(): Promise<${JsNameConverter($table.name)}[]> {
|
||||||
this.messageService.add(`${JsNameConverter($table.name)}Service: fetch data`);
|
this.messageService.add(`${JsNameConverter($table.name)}Service: fetch data`);
|
||||||
return this.http.get<${JsNameConverter($table.name)}>(`\${serviceBaseUrl}/v1/${table.name}`).toPromise()
|
return this.http.get<${JsNameConverter($table.name)}[]>(`\${serviceBaseUrl}/v1/${table.name}s`).toPromise()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
<section class="mat-typography">
|
||||||
|
<mat-card class="defaultCard">
|
||||||
|
<mat-card-header>
|
||||||
|
<mat-card-title>
|
||||||
|
Meine Büros
|
||||||
|
</mat-card-title>
|
||||||
|
</mat-card-header>
|
||||||
|
<mat-card-content>
|
||||||
|
<div>
|
||||||
|
<table mat-table [dataSource]="dataSource" #zftable>
|
||||||
|
<ng-container matColumnDef="description">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Beschreibung</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.description}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="premise">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Haus</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.premise}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||||
|
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="['/commercialunit/', row.id]"></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</mat-card-content>
|
||||||
|
</mat-card>
|
||||||
|
</section>
|
@ -0,0 +1,25 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { MyCommercialUnitsComponent } from './my-commercial-units.component';
|
||||||
|
|
||||||
|
describe('MyCommercialUnitsComponent', () => {
|
||||||
|
let component: MyCommercialUnitsComponent;
|
||||||
|
let fixture: ComponentFixture<MyCommercialUnitsComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
declarations: [ MyCommercialUnitsComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(MyCommercialUnitsComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
@ -0,0 +1,37 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { MessageService } from '../message.service';
|
||||||
|
import { CommercialPremiseService } from '../data-object-service';
|
||||||
|
import { CommercialPremise } from '../data-objects';
|
||||||
|
import { MatTableDataSource } from '@angular/material/table'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-my-commercial-units',
|
||||||
|
templateUrl: './my-commercial-units.component.html',
|
||||||
|
styleUrls: ['./my-commercial-units.component.css']
|
||||||
|
})
|
||||||
|
export class MyCommercialUnitsComponent implements OnInit {
|
||||||
|
|
||||||
|
commercialPremises: CommercialPremise[]
|
||||||
|
dataSource: MatTableDataSource<CommercialPremise>
|
||||||
|
displayedColumns: string[] = ["description", "premise"]
|
||||||
|
|
||||||
|
constructor(private commercialPremiseService: CommercialPremiseService, private messageService: MessageService) { }
|
||||||
|
|
||||||
|
async getCommercialPremises(): Promise<void> {
|
||||||
|
try {
|
||||||
|
this.messageService.add("Trying to load commercialPremises")
|
||||||
|
this.commercialPremises = await this.commercialPremiseService.getCommercialPremises()
|
||||||
|
this.messageService.add("CommercialPremises loaded")
|
||||||
|
|
||||||
|
this.dataSource = new MatTableDataSource<CommercialPremise>(this.commercialPremises)
|
||||||
|
} catch (err) {
|
||||||
|
this.messageService.add(JSON.stringify(err, undefined, 4))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.messageService.add("MyCommercialUnitsComponent.ngOnInit")
|
||||||
|
this.getCommercialPremises()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
3
ui/hv2-ui/src/app/my-flats/my-flats.component.css
Normal file
3
ui/hv2-ui/src/app/my-flats/my-flats.component.css
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
table {
|
||||||
|
width: 75%;
|
||||||
|
}
|
33
ui/hv2-ui/src/app/my-flats/my-flats.component.html
Normal file
33
ui/hv2-ui/src/app/my-flats/my-flats.component.html
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<section class="mat-typography">
|
||||||
|
<mat-card class="defaultCard">
|
||||||
|
<mat-card-header>
|
||||||
|
<mat-card-title>
|
||||||
|
Meine Wohnungen
|
||||||
|
</mat-card-title>
|
||||||
|
</mat-card-header>
|
||||||
|
<mat-card-content>
|
||||||
|
<div>
|
||||||
|
<table mat-table [dataSource]="dataSource" #zftable>
|
||||||
|
<ng-container matColumnDef="description">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Beschreibung</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.description}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="premise">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Haus</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.premise}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="area">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Wohnfläche</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.area}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="flat_no">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Wohnungsnummer</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.flat_no}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||||
|
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="['/flat/', row.id]"></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</mat-card-content>
|
||||||
|
</mat-card>
|
||||||
|
</section>
|
25
ui/hv2-ui/src/app/my-flats/my-flats.component.spec.ts
Normal file
25
ui/hv2-ui/src/app/my-flats/my-flats.component.spec.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { MyFlatsComponent } from './my-flats.component';
|
||||||
|
|
||||||
|
describe('MyFlatsComponent', () => {
|
||||||
|
let component: MyFlatsComponent;
|
||||||
|
let fixture: ComponentFixture<MyFlatsComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
declarations: [ MyFlatsComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(MyFlatsComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
37
ui/hv2-ui/src/app/my-flats/my-flats.component.ts
Normal file
37
ui/hv2-ui/src/app/my-flats/my-flats.component.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { MessageService } from '../message.service';
|
||||||
|
import { FlatService } from '../data-object-service';
|
||||||
|
import { Flat } from '../data-objects';
|
||||||
|
import { MatTableDataSource } from '@angular/material/table'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-my-flats',
|
||||||
|
templateUrl: './my-flats.component.html',
|
||||||
|
styleUrls: ['./my-flats.component.css']
|
||||||
|
})
|
||||||
|
export class MyFlatsComponent implements OnInit {
|
||||||
|
|
||||||
|
flats: Flat[]
|
||||||
|
dataSource: MatTableDataSource<Flat>
|
||||||
|
displayedColumns: string[] = ["description", "premise", "area", "flat_no"]
|
||||||
|
|
||||||
|
constructor(private flatService: FlatService, private messageService: MessageService) { }
|
||||||
|
|
||||||
|
async getFlats(): Promise<void> {
|
||||||
|
try {
|
||||||
|
this.messageService.add("Trying to load flats")
|
||||||
|
this.flats = await this.flatService.getFlats()
|
||||||
|
this.messageService.add("Flats loaded")
|
||||||
|
|
||||||
|
this.dataSource = new MatTableDataSource<Flat>(this.flats)
|
||||||
|
} catch (err) {
|
||||||
|
this.messageService.add(JSON.stringify(err, undefined, 4))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.messageService.add("MyFlatsComponent.ngOnInit")
|
||||||
|
this.getFlats()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
3
ui/hv2-ui/src/app/my-parkings/my-parkings.component.css
Normal file
3
ui/hv2-ui/src/app/my-parkings/my-parkings.component.css
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
table {
|
||||||
|
width: 75%;
|
||||||
|
}
|
25
ui/hv2-ui/src/app/my-parkings/my-parkings.component.html
Normal file
25
ui/hv2-ui/src/app/my-parkings/my-parkings.component.html
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<section class="mat-typography">
|
||||||
|
<mat-card class="defaultCard">
|
||||||
|
<mat-card-header>
|
||||||
|
<mat-card-title>
|
||||||
|
Meine Garagen
|
||||||
|
</mat-card-title>
|
||||||
|
</mat-card-header>
|
||||||
|
<mat-card-content>
|
||||||
|
<div>
|
||||||
|
<table mat-table [dataSource]="dataSource" #zftable>
|
||||||
|
<ng-container matColumnDef="description">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Beschreibung</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.description}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="premise">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Haus</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.premise}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||||
|
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="['/parking/', row.id]"></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</mat-card-content>
|
||||||
|
</mat-card>
|
||||||
|
</section>
|
25
ui/hv2-ui/src/app/my-parkings/my-parkings.component.spec.ts
Normal file
25
ui/hv2-ui/src/app/my-parkings/my-parkings.component.spec.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { MyParkingsComponent } from './my-parkings.component';
|
||||||
|
|
||||||
|
describe('MyParkingsComponent', () => {
|
||||||
|
let component: MyParkingsComponent;
|
||||||
|
let fixture: ComponentFixture<MyParkingsComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
declarations: [ MyParkingsComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(MyParkingsComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
37
ui/hv2-ui/src/app/my-parkings/my-parkings.component.ts
Normal file
37
ui/hv2-ui/src/app/my-parkings/my-parkings.component.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { MessageService } from '../message.service';
|
||||||
|
import { ParkingService } from '../data-object-service';
|
||||||
|
import { Parking } from '../data-objects';
|
||||||
|
import { MatTableDataSource } from '@angular/material/table'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-my-parkings',
|
||||||
|
templateUrl: './my-parkings.component.html',
|
||||||
|
styleUrls: ['./my-parkings.component.css']
|
||||||
|
})
|
||||||
|
export class MyParkingsComponent implements OnInit {
|
||||||
|
|
||||||
|
parkings: Parking[]
|
||||||
|
dataSource: MatTableDataSource<Parking>
|
||||||
|
displayedColumns: string[] = ["description", "premise"]
|
||||||
|
|
||||||
|
constructor(private parkingService: ParkingService, private messageService: MessageService) { }
|
||||||
|
|
||||||
|
async getParkings(): Promise<void> {
|
||||||
|
try {
|
||||||
|
this.messageService.add("Trying to load parkings")
|
||||||
|
this.parkings = await this.parkingService.getParkings()
|
||||||
|
this.messageService.add("Parkings loaded")
|
||||||
|
|
||||||
|
this.dataSource = new MatTableDataSource<Parking>(this.parkings)
|
||||||
|
} catch (err) {
|
||||||
|
this.messageService.add(JSON.stringify(err, undefined, 4))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.messageService.add("MyParkingsComponent.ngOnInit")
|
||||||
|
this.getParkings()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
3
ui/hv2-ui/src/app/my-premises/my-premises.component.css
Normal file
3
ui/hv2-ui/src/app/my-premises/my-premises.component.css
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
table {
|
||||||
|
width: 75%;
|
||||||
|
}
|
33
ui/hv2-ui/src/app/my-premises/my-premises.component.html
Normal file
33
ui/hv2-ui/src/app/my-premises/my-premises.component.html
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<section class="mat-typography">
|
||||||
|
<mat-card class="defaultCard">
|
||||||
|
<mat-card-header>
|
||||||
|
<mat-card-title>
|
||||||
|
Meine Häuser
|
||||||
|
</mat-card-title>
|
||||||
|
</mat-card-header>
|
||||||
|
<mat-card-content>
|
||||||
|
<div>
|
||||||
|
<table mat-table [dataSource]="dataSource" #zftable>
|
||||||
|
<ng-container matColumnDef="description">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Beschreibung</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.description}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="street">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Strasse</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.street}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="zip">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>PLZ</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.zip}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="city">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Ort</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.city}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||||
|
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="['/premise/', row.id]"></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</mat-card-content>
|
||||||
|
</mat-card>
|
||||||
|
</section>
|
25
ui/hv2-ui/src/app/my-premises/my-premises.component.spec.ts
Normal file
25
ui/hv2-ui/src/app/my-premises/my-premises.component.spec.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { MyPremisesComponent } from './my-premises.component';
|
||||||
|
|
||||||
|
describe('MyPremisesComponent', () => {
|
||||||
|
let component: MyPremisesComponent;
|
||||||
|
let fixture: ComponentFixture<MyPremisesComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
declarations: [ MyPremisesComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(MyPremisesComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
37
ui/hv2-ui/src/app/my-premises/my-premises.component.ts
Normal file
37
ui/hv2-ui/src/app/my-premises/my-premises.component.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { MatTableDataSource } from '@angular/material/table';
|
||||||
|
import { PremiseService } from '../data-object-service';
|
||||||
|
import { MessageService } from '../message.service';
|
||||||
|
import { Premise } from '../data-objects'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-my-premises',
|
||||||
|
templateUrl: './my-premises.component.html',
|
||||||
|
styleUrls: ['./my-premises.component.css']
|
||||||
|
})
|
||||||
|
export class MyPremisesComponent implements OnInit {
|
||||||
|
|
||||||
|
premises: Premise[]
|
||||||
|
dataSource: MatTableDataSource<Premise>
|
||||||
|
displayedColumns: string[] = [ "description", "street", "zip", "city" ]
|
||||||
|
|
||||||
|
constructor(private premiseService: PremiseService, private messageService: MessageService) { }
|
||||||
|
|
||||||
|
async getPremises(): Promise<void> {
|
||||||
|
try {
|
||||||
|
this.messageService.add("Trying to load premises")
|
||||||
|
this.premises = await this.premiseService.getPremises()
|
||||||
|
this.messageService.add("Premises loaded")
|
||||||
|
|
||||||
|
this.dataSource = new MatTableDataSource<Premise>(this.premises)
|
||||||
|
} catch (err) {
|
||||||
|
this.messageService.add(JSON.stringify(err, undefined, 4))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.messageService.add("MyPremisesComponent.ngOnInit")
|
||||||
|
this.getPremises()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
3
ui/hv2-ui/src/app/my-tenants/my-tenants.component.css
Normal file
3
ui/hv2-ui/src/app/my-tenants/my-tenants.component.css
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
table {
|
||||||
|
width: 75%;
|
||||||
|
}
|
29
ui/hv2-ui/src/app/my-tenants/my-tenants.component.html
Normal file
29
ui/hv2-ui/src/app/my-tenants/my-tenants.component.html
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<section class="mat-typography">
|
||||||
|
<mat-card class="defaultCard">
|
||||||
|
<mat-card-header>
|
||||||
|
<mat-card-title>
|
||||||
|
Meine Mieter/innen
|
||||||
|
</mat-card-title>
|
||||||
|
</mat-card-header>
|
||||||
|
<mat-card-content>
|
||||||
|
<div>
|
||||||
|
<table mat-table [dataSource]="dataSource" #zftable>
|
||||||
|
<ng-container matColumnDef="lastname">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Nachname</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.lastname}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="firstname">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Vorname</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.firstname}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="address1">
|
||||||
|
<th mat-header-cell *matHeaderCellDef>Adresse 1</th>
|
||||||
|
<td mat-cell *matCellDef="let element">{{element.address1}}</td>
|
||||||
|
</ng-container>
|
||||||
|
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||||
|
<tr mat-row *matRowDef="let row; columns: displayedColumns;" [routerLink]="['/tenant/', row.id]"></tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</mat-card-content>
|
||||||
|
</mat-card>
|
||||||
|
</section>
|
25
ui/hv2-ui/src/app/my-tenants/my-tenants.component.spec.ts
Normal file
25
ui/hv2-ui/src/app/my-tenants/my-tenants.component.spec.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { MyTenantsComponent } from './my-tenants.component';
|
||||||
|
|
||||||
|
describe('MyTenantsComponent', () => {
|
||||||
|
let component: MyTenantsComponent;
|
||||||
|
let fixture: ComponentFixture<MyTenantsComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
declarations: [ MyTenantsComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(MyTenantsComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
37
ui/hv2-ui/src/app/my-tenants/my-tenants.component.ts
Normal file
37
ui/hv2-ui/src/app/my-tenants/my-tenants.component.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { MessageService } from '../message.service';
|
||||||
|
import { TenantService } from '../data-object-service';
|
||||||
|
import { Tenant } from '../data-objects';
|
||||||
|
import { MatTableDataSource } from '@angular/material/table'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-my-tenants',
|
||||||
|
templateUrl: './my-tenants.component.html',
|
||||||
|
styleUrls: ['./my-tenants.component.css']
|
||||||
|
})
|
||||||
|
export class MyTenantsComponent implements OnInit {
|
||||||
|
|
||||||
|
tenants: Tenant[]
|
||||||
|
dataSource: MatTableDataSource<Tenant>
|
||||||
|
displayedColumns: string[] = ["lastname", "firstname", "address1"]
|
||||||
|
|
||||||
|
constructor(private tenantService: TenantService, private messageService: MessageService) { }
|
||||||
|
|
||||||
|
async getTenants(): Promise<void> {
|
||||||
|
try {
|
||||||
|
this.messageService.add("Trying to load tenants")
|
||||||
|
this.tenants = await this.tenantService.getTenants()
|
||||||
|
this.messageService.add("Tenants loaded")
|
||||||
|
|
||||||
|
this.dataSource = new MatTableDataSource<Tenant>(this.tenants)
|
||||||
|
} catch (err) {
|
||||||
|
this.messageService.add(JSON.stringify(err, undefined, 4))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
this.messageService.add("MyTenantsComponent.ngOnInit")
|
||||||
|
this.getTenants()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -5,7 +5,11 @@
|
|||||||
[opened]="(isHandset$ | async) === false">
|
[opened]="(isHandset$ | async) === false">
|
||||||
<mat-toolbar>Menu</mat-toolbar>
|
<mat-toolbar>Menu</mat-toolbar>
|
||||||
<mat-nav-list>
|
<mat-nav-list>
|
||||||
<a mat-list-item href="/test">Mein Test</a>
|
<a mat-list-item href="/premises">Meine Häuser</a>
|
||||||
|
<a mat-list-item href="/flats">Meine Wohnungen</a>
|
||||||
|
<a mat-list-item href="/parkings">Meine Garagen</a>
|
||||||
|
<a mat-list-item href="/commercialunits">Meine Büros</a>
|
||||||
|
<a mat-list-item href="/tenants">Meine Mieter/innen</a>
|
||||||
</mat-nav-list>
|
</mat-nav-list>
|
||||||
</mat-sidenav>
|
</mat-sidenav>
|
||||||
<mat-sidenav-content>
|
<mat-sidenav-content>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user