Compare commits
5 Commits
0.0.1-test
...
angularMat
Author | SHA1 | Date | |
---|---|---|---|
0a7a4c7454
|
|||
159d5bf610
|
|||
a64b838fab
|
|||
657b0838f9
|
|||
baf9e67bac
|
@ -13,6 +13,8 @@ build:
|
|||||||
- hottis
|
- hottis
|
||||||
- linux
|
- linux
|
||||||
- docker
|
- docker
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_TAG
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- dist.tgz
|
- dist.tgz
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
FROM nginx:stable
|
FROM nginx:stable
|
||||||
COPY hv-ui/dist/hv-ui/* /usr/share/nginx/html/
|
COPY dist/hv-ui/* /usr/share/nginx/html/
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
"src/assets"
|
"src/assets"
|
||||||
],
|
],
|
||||||
"styles": [
|
"styles": [
|
||||||
|
"./node_modules/@angular/material/prebuilt-themes/purple-green.css",
|
||||||
"src/styles.css"
|
"src/styles.css"
|
||||||
],
|
],
|
||||||
"scripts": []
|
"scripts": []
|
||||||
@ -87,6 +88,7 @@
|
|||||||
"src/assets"
|
"src/assets"
|
||||||
],
|
],
|
||||||
"styles": [
|
"styles": [
|
||||||
|
"./node_modules/@angular/material/prebuilt-themes/purple-green.css",
|
||||||
"src/styles.css"
|
"src/styles.css"
|
||||||
],
|
],
|
||||||
"scripts": []
|
"scripts": []
|
||||||
|
25
hv-ui/package-lock.json
generated
25
hv-ui/package-lock.json
generated
@ -155,6 +155,23 @@
|
|||||||
"tslib": "^2.0.0"
|
"tslib": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@angular/cdk": {
|
||||||
|
"version": "11.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-11.0.4.tgz",
|
||||||
|
"integrity": "sha512-suhAhsZEv+lLwm8dc524cMvO7gHPi+z2+4tueNS+zDiIObdZc4fs+KoOlnRMdYwba++X/V8mHXuDEQetl3GFcw==",
|
||||||
|
"requires": {
|
||||||
|
"parse5": "^5.0.0",
|
||||||
|
"tslib": "^2.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"parse5": {
|
||||||
|
"version": "5.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
|
||||||
|
"integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"@angular/cli": {
|
"@angular/cli": {
|
||||||
"version": "11.0.7",
|
"version": "11.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.0.7.tgz",
|
||||||
@ -352,6 +369,14 @@
|
|||||||
"tslib": "^2.0.0"
|
"tslib": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@angular/material": {
|
||||||
|
"version": "11.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@angular/material/-/material-11.0.4.tgz",
|
||||||
|
"integrity": "sha512-yjJEl3UbJxyKZFAbhvyZGphDfhtR1vo0AnDEE3KBxAOp9oD4r7paL6ER9rSXFoNRjST56tIDbNtG/wZNtH0XDQ==",
|
||||||
|
"requires": {
|
||||||
|
"tslib": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@angular/platform-browser": {
|
"@angular/platform-browser": {
|
||||||
"version": "11.0.9",
|
"version": "11.0.9",
|
||||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.0.9.tgz",
|
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.0.9.tgz",
|
||||||
|
@ -12,10 +12,12 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "~11.0.6",
|
"@angular/animations": "~11.0.6",
|
||||||
|
"@angular/cdk": "^11.0.4",
|
||||||
"@angular/common": "~11.0.6",
|
"@angular/common": "~11.0.6",
|
||||||
"@angular/compiler": "~11.0.6",
|
"@angular/compiler": "~11.0.6",
|
||||||
"@angular/core": "~11.0.6",
|
"@angular/core": "~11.0.6",
|
||||||
"@angular/forms": "~11.0.6",
|
"@angular/forms": "~11.0.6",
|
||||||
|
"@angular/material": "^11.0.4",
|
||||||
"@angular/platform-browser": "~11.0.6",
|
"@angular/platform-browser": "~11.0.6",
|
||||||
"@angular/platform-browser-dynamic": "~11.0.6",
|
"@angular/platform-browser-dynamic": "~11.0.6",
|
||||||
"@angular/router": "~11.0.6",
|
"@angular/router": "~11.0.6",
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
/* AppComponent's private CSS styles */
|
|
||||||
h1 {
|
|
||||||
font-size: 1.2em;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
nav a {
|
|
||||||
padding: 5px 10px;
|
|
||||||
text-decoration: none;
|
|
||||||
margin-top: 10px;
|
|
||||||
display: inline-block;
|
|
||||||
background-color: #eee;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
nav a:visited, a:link {
|
|
||||||
color: #334953;
|
|
||||||
}
|
|
||||||
nav a:hover {
|
|
||||||
color: #039be5;
|
|
||||||
background-color: #cfd8dc;
|
|
||||||
}
|
|
||||||
nav a.active {
|
|
||||||
color: #039be5;
|
|
||||||
}
|
|
@ -4,5 +4,8 @@
|
|||||||
<a routerLink="/objekte">Meine Objekte</a>
|
<a routerLink="/objekte">Meine Objekte</a>
|
||||||
<a routerLink="/mieters">Meine Mieter</a>
|
<a routerLink="/mieters">Meine Mieter</a>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
|
<mat-slider min="1" max="100" step="1" value="1"></mat-slider>
|
||||||
|
|
||||||
<router-outlet></router-outlet>
|
<router-outlet></router-outlet>
|
||||||
<app-messages></app-messages>
|
<app-messages></app-messages>
|
@ -9,6 +9,10 @@ import { ObjekteComponent } from './objekte/objekte.component';
|
|||||||
import { MietersComponent } from './mieters/mieters.component';
|
import { MietersComponent } from './mieters/mieters.component';
|
||||||
import { WohnungenComponent } from './wohnungen/wohnungen.component';
|
import { WohnungenComponent } from './wohnungen/wohnungen.component';
|
||||||
import { MieterDetailComponent } from './mieter-detail/mieter-detail.component';
|
import { MieterDetailComponent } from './mieter-detail/mieter-detail.component';
|
||||||
|
import { FormsModule } from '@angular/forms';
|
||||||
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
|
import { MatSliderModule } from '@angular/material/slider'
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
@ -21,8 +25,11 @@ import { MieterDetailComponent } from './mieter-detail/mieter-detail.component';
|
|||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
|
FormsModule,
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
HttpClientModule
|
HttpClientModule,
|
||||||
|
BrowserAnimationsModule,
|
||||||
|
MatSliderModule
|
||||||
],
|
],
|
||||||
providers: [],
|
providers: [],
|
||||||
bootstrap: [AppComponent]
|
bootstrap: [AppComponent]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
export interface Forderung {
|
export interface Forderung {
|
||||||
id: number;
|
id: number;
|
||||||
mieter_id: number;
|
mieter: number;
|
||||||
ref_wohnung: number;
|
ref_wohnung: number;
|
||||||
datum: string;
|
datum: string;
|
||||||
betrag: number;
|
betrag: number;
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
/* MessagesComponent's private CSS styles */
|
|
||||||
h2 {
|
|
||||||
color: red;
|
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
|
||||||
font-weight: lighter;
|
|
||||||
}
|
|
||||||
|
|
||||||
button.clear {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
color: #333;
|
|
||||||
background-color: #eee;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
border: none;
|
|
||||||
padding: 5px 10px;
|
|
||||||
border-radius: 4px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
button:hover {
|
|
||||||
background-color: #cfd8dc;
|
|
||||||
}
|
|
@ -1,8 +1,5 @@
|
|||||||
<div *ngIf="messageService.messages.length">
|
<div *ngIf="messageService.messages.length">
|
||||||
|
|
||||||
<h2>Messages</h2>
|
<h2>Messages</h2>
|
||||||
<button class="clear"
|
<button (click)="messageService.clear()">clear</button>
|
||||||
(click)="messageService.clear()">clear</button>
|
|
||||||
<div *ngFor='let message of messageService.messages'> {{message}} </div>
|
<div *ngFor='let message of messageService.messages'> {{message}} </div>
|
||||||
|
|
||||||
</div>
|
</div>
|
@ -1,8 +1,8 @@
|
|||||||
<h1>Mieter: {{mieter.vorname}} {{mieter.nachname}} ({{mieter.id}})</h1>
|
<h1>Mieter: {{mieter.vorname}} {{mieter.nachname}} ({{mieter.id}})</h1>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr><td>Objekt:</td><td>{{mieter.objekt}} ({{mieter.objekt_id}})</td></tr>
|
<tr><td>Objekt:</td><td>{{mieter.objekt_shortname}} ({{mieter.objekt}})</td></tr>
|
||||||
<tr><td>Wohnung:</td><td>{{mieter.wohnung}} ({{mieter.wohnung_id}})</td></tr>
|
<tr><td>Wohnung:</td><td>{{mieter.wohnung_shortname}} ({{mieter.wohnung}})</td></tr>
|
||||||
<tr><td>Vorname:</td><td>{{mieter.vorname}}</td></tr>
|
<tr><td>Vorname:</td><td>{{mieter.vorname}}</td></tr>
|
||||||
<tr><td>Nachname:</td><td>{{mieter.nachname}}</td></tr>
|
<tr><td>Nachname:</td><td>{{mieter.nachname}}</td></tr>
|
||||||
<tr><td>Anrede:</td><td>{{mieter.anrede}}</td></tr>
|
<tr><td>Anrede:</td><td>{{mieter.anrede}}</td></tr>
|
||||||
@ -14,14 +14,25 @@
|
|||||||
<tr><td>Auszug:</td><td>{{mieter.auszug}}</td></tr>
|
<tr><td>Auszug:</td><td>{{mieter.auszug}}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label>Jahr:
|
||||||
|
<input [(ngModel)]="year" (input)="onYearInput()" placeholder="Jahr"/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Datum</th>
|
<th>Datum soll</th>
|
||||||
|
<th>Datum ist</th>
|
||||||
<th>Forderung</th>
|
<th>Forderung</th>
|
||||||
<th>Zahlung</th>
|
<th>Zahlung</th>
|
||||||
|
<th>Kommentar</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr *ngFor="let forderung of forderungen">
|
<tr *ngFor="let zahlungForderung of zahlungenForderungen">
|
||||||
<td>{{forderung.datum}}</td>
|
<td>{{zahlungForderung.datum_soll}}</td>
|
||||||
<td>{{forderung.betrag}}<br/><span style="font-size: small;">{{forderung.kommentar}}</span></td>
|
<td>{{zahlungForderung.datum_ist}}</td>
|
||||||
|
<td>{{zahlungForderung.betrag_forderung}}</td>
|
||||||
|
<td>{{zahlungForderung.betrag_zahlung}}</td>
|
||||||
|
<td>{{zahlungForderung.kommentar}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
@ -3,9 +3,9 @@ import { ActivatedRoute } from '@angular/router'
|
|||||||
import { Location } from '@angular/common'
|
import { Location } from '@angular/common'
|
||||||
|
|
||||||
import { Mieter } from '../mieter'
|
import { Mieter } from '../mieter'
|
||||||
import { Forderung } from '../forderung'
|
import { ZahlungForderung } from '../zahlung-forderung'
|
||||||
import { MieterService} from '../mieter.service'
|
import { MieterService} from '../mieter.service'
|
||||||
import { ForderungService} from '../forderung.service'
|
import { ZahlungForderungService} from '../zahlung-forderung.service'
|
||||||
import { MessageService } from '../message.service'
|
import { MessageService } from '../message.service'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@ -16,12 +16,13 @@ import { MessageService } from '../message.service'
|
|||||||
export class MieterDetailComponent implements OnInit {
|
export class MieterDetailComponent implements OnInit {
|
||||||
|
|
||||||
mieter: Mieter
|
mieter: Mieter
|
||||||
forderungen : Forderung[]
|
year: string
|
||||||
|
zahlungenForderungen : ZahlungForderung[]
|
||||||
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private mieterService: MieterService,
|
private mieterService: MieterService,
|
||||||
private forderungService: ForderungService,
|
private zahlungForderungService: ZahlungForderungService,
|
||||||
private messageService: MessageService,
|
private messageService: MessageService,
|
||||||
private route: ActivatedRoute,
|
private route: ActivatedRoute,
|
||||||
private location: Location ) {
|
private location: Location ) {
|
||||||
@ -31,13 +32,28 @@ export class MieterDetailComponent implements OnInit {
|
|||||||
const id = +this.route.snapshot.paramMap.get('id')
|
const id = +this.route.snapshot.paramMap.get('id')
|
||||||
try {
|
try {
|
||||||
this.mieter = await this.mieterService.getMieter(id)
|
this.mieter = await this.mieterService.getMieter(id)
|
||||||
this.forderungen = await this.forderungService.getForderungenByMieter(id)
|
this.zahlungenForderungen = await this.zahlungForderungService.getZahlungenForderungenByMieterAndYear(id, +this.year)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.messageService.add(JSON.stringify(err, undefined, 4))
|
this.messageService.add(JSON.stringify(err, undefined, 4))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
async getZahlungenForderungen() {
|
||||||
this.getMieter()
|
const id = this.mieter?.id ?? 0
|
||||||
|
try {
|
||||||
|
this.zahlungenForderungen = await this.zahlungForderungService.getZahlungenForderungenByMieterAndYear(id, +this.year)
|
||||||
|
} catch (err) {
|
||||||
|
this.messageService.add(JSON.stringify(err, undefined, 4))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onYearInput(): void {
|
||||||
|
this.getZahlungenForderungen()
|
||||||
|
}
|
||||||
|
|
||||||
|
async ngOnInit(): Promise<void> {
|
||||||
|
this.year = new Date().getFullYear().toString()
|
||||||
|
await this.getMieter()
|
||||||
|
await this.getZahlungenForderungen()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
export interface Mieter {
|
export interface Mieter {
|
||||||
id: number;
|
id: number;
|
||||||
objekt_id: number;
|
objekt: number;
|
||||||
wohnung_id: number;
|
wohnung: number;
|
||||||
wohnung: string;
|
wohnung_shortname: string;
|
||||||
objekt: string;
|
objekt_shortname: string;
|
||||||
anrede: string;
|
anrede: string;
|
||||||
vorname: string;
|
vorname: string;
|
||||||
nachname: string;
|
nachname: string;
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
/* HeroesComponent's private CSS styles */
|
|
||||||
.mieters {
|
|
||||||
margin: 0 0 2em 0;
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0;
|
|
||||||
width: 15em;
|
|
||||||
}
|
|
||||||
.mieters li {
|
|
||||||
cursor: pointer;
|
|
||||||
position: relative;
|
|
||||||
left: 0;
|
|
||||||
background-color: #EEE;
|
|
||||||
margin: .5em;
|
|
||||||
padding: .3em 0;
|
|
||||||
height: 1.6em;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.mieters li:hover {
|
|
||||||
color: #607D8B;
|
|
||||||
background-color: #DDD;
|
|
||||||
left: .1em;
|
|
||||||
}
|
|
||||||
.mieters li.selected {
|
|
||||||
background-color: #CFD8DC;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.mieters li.selected:hover {
|
|
||||||
background-color: #BBD8DC;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.mieters .badge {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: small;
|
|
||||||
color: white;
|
|
||||||
padding: 0.8em 0.7em 0 0.7em;
|
|
||||||
background-color:#405061;
|
|
||||||
line-height: 1em;
|
|
||||||
position: relative;
|
|
||||||
left: -1px;
|
|
||||||
top: -4px;
|
|
||||||
height: 1.8em;
|
|
||||||
margin-right: .8em;
|
|
||||||
border-radius: 4px 0 0 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.mieters a {
|
|
||||||
color: #333;
|
|
||||||
text-decoration: none;
|
|
||||||
position: relative;
|
|
||||||
display: block;
|
|
||||||
width: 250px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mieters a:hover {
|
|
||||||
color:#607D8B;
|
|
||||||
}
|
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
/* HeroesComponent's private CSS styles */
|
|
||||||
.objekte {
|
|
||||||
margin: 0 0 2em 0;
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0;
|
|
||||||
width: 15em;
|
|
||||||
}
|
|
||||||
.objekte li {
|
|
||||||
cursor: pointer;
|
|
||||||
position: relative;
|
|
||||||
left: 0;
|
|
||||||
background-color: #EEE;
|
|
||||||
margin: .5em;
|
|
||||||
padding: .3em 0;
|
|
||||||
height: 1.6em;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.objekte li:hover {
|
|
||||||
color: #607D8B;
|
|
||||||
background-color: #DDD;
|
|
||||||
left: .1em;
|
|
||||||
}
|
|
||||||
.objekte li.selected {
|
|
||||||
background-color: #CFD8DC;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.objekte li.selected:hover {
|
|
||||||
background-color: #BBD8DC;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.objekte .badge {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: small;
|
|
||||||
color: white;
|
|
||||||
padding: 0.8em 0.7em 0 0.7em;
|
|
||||||
background-color:#405061;
|
|
||||||
line-height: 1em;
|
|
||||||
position: relative;
|
|
||||||
left: -1px;
|
|
||||||
top: -4px;
|
|
||||||
height: 1.8em;
|
|
||||||
margin-right: .8em;
|
|
||||||
border-radius: 4px 0 0 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.objekte a {
|
|
||||||
color: #333;
|
|
||||||
text-decoration: none;
|
|
||||||
position: relative;
|
|
||||||
display: block;
|
|
||||||
width: 250px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.objekte a:hover {
|
|
||||||
color:#607D8B;
|
|
||||||
}
|
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
export interface Wohnung {
|
export interface Wohnung {
|
||||||
id: number;
|
id: number;
|
||||||
objekt_id: number;
|
objekt: number;
|
||||||
wohnung_id: number;
|
shortname: string;
|
||||||
wohnung: string;
|
objekt_shortname: string;
|
||||||
objekt: string;
|
|
||||||
flaeche: number;
|
flaeche: number;
|
||||||
}
|
}
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
/* HeroesComponent's private CSS styles */
|
|
||||||
.wohnungen {
|
|
||||||
margin: 0 0 2em 0;
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0;
|
|
||||||
width: 15em;
|
|
||||||
}
|
|
||||||
.wohnungen li {
|
|
||||||
cursor: pointer;
|
|
||||||
position: relative;
|
|
||||||
left: 0;
|
|
||||||
background-color: #EEE;
|
|
||||||
margin: .5em;
|
|
||||||
padding: .3em 0;
|
|
||||||
height: 1.6em;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.wohnungen li:hover {
|
|
||||||
color: #607D8B;
|
|
||||||
background-color: #DDD;
|
|
||||||
left: .1em;
|
|
||||||
}
|
|
||||||
.wohnungen li.selected {
|
|
||||||
background-color: #CFD8DC;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.wohnungen li.selected:hover {
|
|
||||||
background-color: #BBD8DC;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.wohnungen .badge {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: small;
|
|
||||||
color: white;
|
|
||||||
padding: 0.8em 0.7em 0 0.7em;
|
|
||||||
background-color:#405061;
|
|
||||||
line-height: 1em;
|
|
||||||
position: relative;
|
|
||||||
left: -1px;
|
|
||||||
top: -4px;
|
|
||||||
height: 1.8em;
|
|
||||||
margin-right: .8em;
|
|
||||||
border-radius: 4px 0 0 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.wohnungen a {
|
|
||||||
color: #333;
|
|
||||||
text-decoration: none;
|
|
||||||
position: relative;
|
|
||||||
display: block;
|
|
||||||
width: 250px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wohnungen a:hover {
|
|
||||||
color:#607D8B;
|
|
||||||
}
|
|
||||||
|
@ -5,6 +5,6 @@
|
|||||||
</p>
|
</p>
|
||||||
<ul class="wohnungen">
|
<ul class="wohnungen">
|
||||||
<li *ngFor="let wohnung of wohnungen">
|
<li *ngFor="let wohnung of wohnungen">
|
||||||
<span>{{wohnung.wohnung}}</span>: <span>{{wohnung.flaeche}}</span>m²
|
<span>{{wohnung.shortname}}</span>: <span>{{wohnung.flaeche}}</span>m²
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -15,7 +15,7 @@ export class ZahlungForderungService {
|
|||||||
|
|
||||||
getZahlungenForderungenByMieterAndYear(mieterId: number, year: number): Promise<ZahlungForderung[]> {
|
getZahlungenForderungenByMieterAndYear(mieterId: number, year: number): Promise<ZahlungForderung[]> {
|
||||||
this.messageService.add(`ZahlungForderungService: fetched zahlungen and forderungen by mieter ${mieterId} and year ${year}`)
|
this.messageService.add(`ZahlungForderungService: fetched zahlungen and forderungen by mieter ${mieterId} and year ${year}`)
|
||||||
return this.http.get<ZahlungForderung[]>(`${serviceBaseUrl}/hv/mieter/${mieterId}/zahlungforderung${year}`).toPromise()
|
return this.http.get<ZahlungForderung[]>(`${serviceBaseUrl}/hv/mieter/${mieterId}/zahlungforderung/${year}`).toPromise()
|
||||||
}
|
}
|
||||||
|
|
||||||
getForderung(id: number): Promise<Forderung> {
|
getForderung(id: number): Promise<Forderung> {
|
||||||
|
7
hv-ui/src/app/zahlung.ts
Normal file
7
hv-ui/src/app/zahlung.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
export interface Zahlung {
|
||||||
|
id: number;
|
||||||
|
mieter_id: number;
|
||||||
|
ref_wohnung: number;
|
||||||
|
datum: string;
|
||||||
|
betrag: number;
|
||||||
|
}
|
@ -6,8 +6,10 @@
|
|||||||
<base href="/">
|
<base href="/">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet">
|
||||||
|
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body class="mat-typography">
|
||||||
<app-root></app-root>
|
<app-root></app-root>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
/* Application-wide Styles */
|
|
||||||
h1 {
|
|
||||||
color: #369;
|
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
|
||||||
font-size: 250%;
|
|
||||||
}
|
|
||||||
h2, h3 {
|
|
||||||
color: #444;
|
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
|
||||||
font-weight: lighter;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
margin: 2em;
|
|
||||||
}
|
|
||||||
body, input[type="text"], button {
|
|
||||||
color: #333;
|
|
||||||
font-family: Cambria, Georgia, serif;
|
|
||||||
}
|
|
||||||
/* everywhere else */
|
|
||||||
* {
|
|
||||||
font-family: Arial, Helvetica, sans-serif;
|
|
||||||
}
|
|
Reference in New Issue
Block a user