Georg Spar
3 years ago
29 changed files with 1085 additions and 9 deletions
@ -0,0 +1,47 @@
|
||||
<h2>Kundenpflege</h2> |
||||
<div class="tabelle"> |
||||
<mat-form-field class="tabelle"> |
||||
<input matInput (keyup)="applyFilter($event)" placeholder="Suche"> |
||||
</mat-form-field> |
||||
<div> |
||||
<button mat-icon-button (click)="addKunde()" class="mb"><mat-icon>add_circle</mat-icon></button> |
||||
</div> |
||||
<table #table mat-table [dataSource]="dataSource" matSort class="tabelle"> |
||||
|
||||
<ng-container matColumnDef="update"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header></th> |
||||
<td mat-cell *matCellDef="let row"><button mat-icon-button (click)="updateKunde(row.id)" class="mb"><mat-icon>change_circle</mat-icon></button></td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="delete"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header></th> |
||||
<td mat-cell *matCellDef="let row"><button mat-icon-button (click)="deleteKunde(row.id)" class="mb"><mat-icon>remove_circle</mat-icon></button></td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="id"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>ID</th> |
||||
<td mat-cell *matCellDef="let row">{{row.id}}</td> |
||||
</ng-container> |
||||
|
||||
<!-- Name Column --> |
||||
<ng-container matColumnDef="kdNrExt"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>externe Kundennummer</th> |
||||
<td mat-cell *matCellDef="let row">{{row.kdNrExt}}</td> |
||||
</ng-container> |
||||
|
||||
|
||||
<ng-container matColumnDef="name"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th> |
||||
<td mat-cell *matCellDef="let row">{{row.name}}</td> |
||||
</ng-container> |
||||
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr> |
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> |
||||
</table> |
||||
<mat-paginator class="tabelle" |
||||
[pageSizeOptions]="pageSizeOptions" |
||||
showFirstLastButtons> |
||||
</mat-paginator> |
||||
|
||||
</div> |
@ -0,0 +1,25 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing'; |
||||
|
||||
import { KundenDataComponent } from './kunden-data.component'; |
||||
|
||||
describe('KundenDataComponent', () => { |
||||
let component: KundenDataComponent; |
||||
let fixture: ComponentFixture<KundenDataComponent>; |
||||
|
||||
beforeEach(async () => { |
||||
await TestBed.configureTestingModule({ |
||||
declarations: [ KundenDataComponent ] |
||||
}) |
||||
.compileComponents(); |
||||
}); |
||||
|
||||
beforeEach(() => { |
||||
fixture = TestBed.createComponent(KundenDataComponent); |
||||
component = fixture.componentInstance; |
||||
fixture.detectChanges(); |
||||
}); |
||||
|
||||
it('should create', () => { |
||||
expect(component).toBeTruthy(); |
||||
}); |
||||
}); |
@ -0,0 +1,174 @@
|
||||
import { Component, AfterViewInit, ViewChild, Output, EventEmitter, ChangeDetectorRef } from '@angular/core'; |
||||
import { DbXchangeService } from '../shared/db-xchange.service' |
||||
import { MatTableDataSource } from '@angular/material/table'; |
||||
import { MatSort } from '@angular/material/sort'; |
||||
import { MatPaginator } from '@angular/material/paginator'; |
||||
import { SelectionModel } from '@angular/cdk/collections'; |
||||
import { MatInput } from '@angular/material/input'; |
||||
import { MatFormField } from '@angular/material/form-field'; |
||||
import { MatDialog } from '@angular/material/dialog'; |
||||
|
||||
import { MdAddKundeComponent } from '../md-add-kunde/md-add-kunde.component'; |
||||
|
||||
|
||||
export interface Kunde { |
||||
id: number; |
||||
kdNrExt: number; |
||||
name: string; |
||||
} |
||||
|
||||
|
||||
@Component({ |
||||
selector: 'app-kunden-data', |
||||
templateUrl: './kunden-data.component.html', |
||||
styleUrls: ['./kunden-data.component.css'] |
||||
}) |
||||
export class KundenDataComponent implements AfterViewInit { |
||||
|
||||
dataSource!: MatTableDataSource<Kunde>; |
||||
data: Kunde[] = [{id:0,kdNrExt:0, name:''}]; |
||||
res: any; |
||||
selection: SelectionModel<Kunde>; |
||||
pageSizeOptions: number[] = [5, 10, 20]; |
||||
kunde: Kunde = {id:0,kdNrExt:0, name:''}; |
||||
|
||||
|
||||
@ViewChild(MatSort) |
||||
sort!: MatSort; |
||||
@ViewChild(MatPaginator, { static: true }) |
||||
paginator!: MatPaginator; |
||||
@Output() sendEvent = new EventEmitter<string>(); |
||||
|
||||
displayedColumns = ['update', 'delete', 'id', 'kdNrExt', 'name']; |
||||
|
||||
constructor(private dbx: DbXchangeService, public mdAK: MatDialog, private changeDetector: ChangeDetectorRef) {
|
||||
const initialSelection: Kunde[] | undefined = [] ; |
||||
const allowMultiSelect = false; |
||||
this.selection = new SelectionModel<Kunde>(allowMultiSelect, initialSelection); |
||||
|
||||
} |
||||
|
||||
ngAfterViewInit(): void { |
||||
this.paginator.pageSize = 10; |
||||
this.refresh(); |
||||
} |
||||
|
||||
applyFilter(event: Event) { |
||||
const filterValue = (event.target as HTMLInputElement).value; |
||||
filterValue.trim().toLowerCase(); |
||||
this.dataSource.filter = filterValue; |
||||
} |
||||
|
||||
masterToggle() { |
||||
this.isAllSelected() ? |
||||
this.selection.clear() : |
||||
this.dataSource.data.forEach(row => this.selection.select(row)); |
||||
} |
||||
|
||||
isAllSelected() { |
||||
const numSelected = this.selection.selected.length; |
||||
const numRows = this.dataSource.data.length; |
||||
return numSelected == numRows; |
||||
} |
||||
|
||||
transform( res: any) { |
||||
var tfd: Kunde[] = [{id:0,kdNrExt:0, name:''}]; |
||||
let i = 0; |
||||
|
||||
for(let blubb of res) { |
||||
tfd[i].id = blubb.id; |
||||
tfd[i].kdNrExt = blubb.artNrExt; |
||||
tfd[i].name = blubb.bezeichnung; |
||||
i++; |
||||
} |
||||
return tfd; |
||||
} |
||||
|
||||
refresh() { |
||||
this.data = [{id:0,kdNrExt:0, name:''}]; |
||||
this.dbx.getAllKunden() |
||||
.subscribe(result => { |
||||
this.res = result; |
||||
//this.data = this.transform(this.res);
|
||||
this.dataSource = new MatTableDataSource(this.res); |
||||
this.dataSource.paginator = this.paginator; |
||||
this.dataSource.sort = this.sort; |
||||
this.changeDetector.detectChanges(); |
||||
}, |
||||
error => console.log(error)); |
||||
} |
||||
|
||||
addKunde() { |
||||
|
||||
let res: any; |
||||
this.kunde = {id:0,kdNrExt:0, name:''}; |
||||
const dialogRef = this.mdAK.open(MdAddKundeComponent, { |
||||
width: '650px', data: this.kunde |
||||
}); |
||||
dialogRef.afterClosed(). |
||||
subscribe(result => {
|
||||
res = result; |
||||
res.kdNrExt = Number (res.kdNrExt) |
||||
this.kunde = res;
|
||||
console.log('nach dem Dialog', this.kunde); |
||||
if (this.kunde) { |
||||
|
||||
this.dbx.addKunde(this.kunde) |
||||
.subscribe(result2 => { |
||||
res = result2; |
||||
if( res ) { |
||||
console.log('hat funktioniert', res) |
||||
confirm("Kunde mit der ID " + res.id.toString() + " wurde angelegt"); |
||||
this.refresh(); |
||||
} |
||||
else { |
||||
console.log('hat nicht funktioniert'); |
||||
} |
||||
|
||||
} ); |
||||
} |
||||
this.refresh();
|
||||
}); |
||||
} |
||||
|
||||
updateKunde(id: number) { |
||||
let res: any; |
||||
this.kunde = {id:0,kdNrExt:0, name:''}; |
||||
this.dbx.getKunde(id) |
||||
.subscribe(result => { |
||||
res = result; |
||||
this.kunde.id = res.id; |
||||
this.kunde.kdNrExt = res.kdNrExt; |
||||
this.kunde.name = res.name; |
||||
const dialogRef = this.mdAK.open(MdAddKundeComponent, { width: '650px', data: this.kunde |
||||
}); |
||||
dialogRef.afterClosed() |
||||
.subscribe( resu => { |
||||
this.kunde = resu; |
||||
if(this.kunde) { |
||||
this.dbx.updateKunde(this.kunde) |
||||
.subscribe( result2 => { |
||||
if (result2 ) { |
||||
confirm("Kunde mit der ID " + this.kunde.id + " upgedated"); |
||||
this.refresh(); |
||||
}});
|
||||
}}, |
||||
error => console.log(error)); |
||||
this.refresh(); |
||||
}, |
||||
error => console.log(error)); |
||||
} |
||||
|
||||
deleteKunde(id: number) { |
||||
if(confirm("Kunde mit der ID " + id.toString() + " wirklich löschen?")) { |
||||
this.dbx.deleteKunde(id) |
||||
.subscribe(result => { |
||||
|
||||
this.refresh(); |
||||
}, |
||||
error => console.log(error)); |
||||
} |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,47 @@
|
||||
<h2>Lieferantenpflege</h2> |
||||
<div class="tabelle"> |
||||
<mat-form-field class="tabelle"> |
||||
<input matInput (keyup)="applyFilter($event)" placeholder="Suche"> |
||||
</mat-form-field> |
||||
<div> |
||||
<button mat-icon-button (click)="addLieferant()" class="mb"><mat-icon>add_circle</mat-icon></button> |
||||
</div> |
||||
<table #table mat-table [dataSource]="dataSource" matSort class="tabelle"> |
||||
|
||||
<ng-container matColumnDef="update"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header></th> |
||||
<td mat-cell *matCellDef="let row"><button mat-icon-button (click)="updateLieferant(row.id)" class="mb"><mat-icon>change_circle</mat-icon></button></td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="delete"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header></th> |
||||
<td mat-cell *matCellDef="let row"><button mat-icon-button (click)="deleteLieferant(row.id)" class="mb"><mat-icon>remove_circle</mat-icon></button></td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="id"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>ID</th> |
||||
<td mat-cell *matCellDef="let row">{{row.id}}</td> |
||||
</ng-container> |
||||
|
||||
<!-- Name Column --> |
||||
<ng-container matColumnDef="liefNrExt"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>externe Lieferantennummer</th> |
||||
<td mat-cell *matCellDef="let row">{{row.liefNrExt}}</td> |
||||
</ng-container> |
||||
|
||||
|
||||
<ng-container matColumnDef="name"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th> |
||||
<td mat-cell *matCellDef="let row">{{row.name}}</td> |
||||
</ng-container> |
||||
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr> |
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> |
||||
</table> |
||||
<mat-paginator class="tabelle" |
||||
[pageSizeOptions]="pageSizeOptions" |
||||
showFirstLastButtons> |
||||
</mat-paginator> |
||||
|
||||
</div> |
@ -0,0 +1,25 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing'; |
||||
|
||||
import { LieferantenDataComponent } from './lieferanten-data.component'; |
||||
|
||||
describe('LieferantenDataComponent', () => { |
||||
let component: LieferantenDataComponent; |
||||
let fixture: ComponentFixture<LieferantenDataComponent>; |
||||
|
||||
beforeEach(async () => { |
||||
await TestBed.configureTestingModule({ |
||||
declarations: [ LieferantenDataComponent ] |
||||
}) |
||||
.compileComponents(); |
||||
}); |
||||
|
||||
beforeEach(() => { |
||||
fixture = TestBed.createComponent(LieferantenDataComponent); |
||||
component = fixture.componentInstance; |
||||
fixture.detectChanges(); |
||||
}); |
||||
|
||||
it('should create', () => { |
||||
expect(component).toBeTruthy(); |
||||
}); |
||||
}); |
@ -0,0 +1,172 @@
|
||||
import { Component, AfterViewInit, ViewChild, Output, EventEmitter, ChangeDetectorRef } from '@angular/core'; |
||||
import { DbXchangeService } from '../shared/db-xchange.service' |
||||
import { MatTableDataSource } from '@angular/material/table'; |
||||
import { MatSort } from '@angular/material/sort'; |
||||
import { MatPaginator } from '@angular/material/paginator'; |
||||
import { SelectionModel } from '@angular/cdk/collections'; |
||||
import { MatInput } from '@angular/material/input'; |
||||
import { MatFormField } from '@angular/material/form-field'; |
||||
import { MatDialog } from '@angular/material/dialog'; |
||||
|
||||
import { MdAddLieferantComponent } from '../md-add-lieferant/md-add-lieferant.component'; |
||||
|
||||
|
||||
export interface Lieferant { |
||||
id: number; |
||||
liefNrExt: number; |
||||
name: string; |
||||
} |
||||
|
||||
@Component({ |
||||
selector: 'app-lieferanten-data', |
||||
templateUrl: './lieferanten-data.component.html', |
||||
styleUrls: ['./lieferanten-data.component.css'] |
||||
}) |
||||
export class LieferantenDataComponent implements AfterViewInit { |
||||
|
||||
dataSource!: MatTableDataSource<Lieferant>; |
||||
data: Lieferant[] = [{id:0,liefNrExt:0, name:''}]; |
||||
res: any; |
||||
selection: SelectionModel<Lieferant>; |
||||
pageSizeOptions: number[] = [5, 10, 20]; |
||||
liefer: Lieferant = {id:0,liefNrExt:0, name:''}; |
||||
|
||||
|
||||
@ViewChild(MatSort) |
||||
sort!: MatSort; |
||||
@ViewChild(MatPaginator, { static: true }) |
||||
paginator!: MatPaginator; |
||||
@Output() sendEvent = new EventEmitter<string>(); |
||||
|
||||
displayedColumns = ['update', 'delete', 'id', 'liefNrExt', 'name']; |
||||
|
||||
constructor(private dbx: DbXchangeService, public mdAL: MatDialog, private changeDetector: ChangeDetectorRef) {
|
||||
const initialSelection: Lieferant[] | undefined = [] ; |
||||
const allowMultiSelect = false; |
||||
this.selection = new SelectionModel<Lieferant>(allowMultiSelect, initialSelection); |
||||
|
||||
} |
||||
|
||||
ngAfterViewInit(): void { |
||||
this.paginator.pageSize = 10; |
||||
this.refresh(); |
||||
} |
||||
|
||||
applyFilter(event: Event) { |
||||
const filterValue = (event.target as HTMLInputElement).value; |
||||
filterValue.trim().toLowerCase(); |
||||
this.dataSource.filter = filterValue; |
||||
} |
||||
|
||||
masterToggle() { |
||||
this.isAllSelected() ? |
||||
this.selection.clear() : |
||||
this.dataSource.data.forEach(row => this.selection.select(row)); |
||||
} |
||||
|
||||
isAllSelected() { |
||||
const numSelected = this.selection.selected.length; |
||||
const numRows = this.dataSource.data.length; |
||||
return numSelected == numRows; |
||||
} |
||||
|
||||
transform( res: any) { |
||||
var tfd: Lieferant[] = [{id:0,liefNrExt:0, name:''}]; |
||||
let i = 0; |
||||
|
||||
for(let blubb of res) { |
||||
tfd[i].id = blubb.id; |
||||
tfd[i].liefNrExt = blubb.liefNrExt; |
||||
tfd[i].name = blubb.bezeichnung; |
||||
i++; |
||||
} |
||||
return tfd; |
||||
} |
||||
|
||||
refresh() { |
||||
this.data = [{id:0,liefNrExt:0, name:''}]; |
||||
this.dbx.getAllLieferanten() |
||||
.subscribe(result => { |
||||
this.res = result; |
||||
//this.data = this.transform(this.res);
|
||||
this.dataSource = new MatTableDataSource(this.res); |
||||
this.dataSource.paginator = this.paginator; |
||||
this.dataSource.sort = this.sort; |
||||
this.changeDetector.detectChanges(); |
||||
}, |
||||
error => console.log(error)); |
||||
} |
||||
|
||||
addLieferant() { |
||||
|
||||
let res: any; |
||||
this.liefer = {id:0,liefNrExt:0, name:''}; |
||||
const dialogRef = this.mdAL.open(MdAddLieferantComponent, { |
||||
width: '650px', data: this.liefer |
||||
}); |
||||
dialogRef.afterClosed(). |
||||
subscribe(result => {
|
||||
res = result; |
||||
res.liefNrExt = Number (res.liefNrExt) |
||||
this.liefer = res;
|
||||
console.log('nach dem Dialog', this.liefer); |
||||
if (this.liefer) { |
||||
|
||||
this.dbx.addLieferant(this.liefer) |
||||
.subscribe(result2 => { |
||||
res = result2; |
||||
if( res ) { |
||||
console.log('hat funktioniert', res) |
||||
confirm("Lieferant mit der ID " + res.id.toString() + " wurde angelegt"); |
||||
this.refresh(); |
||||
} |
||||
else { |
||||
console.log('hat nicht funktioniert'); |
||||
} |
||||
|
||||
} ); |
||||
} |
||||
this.refresh();
|
||||
}); |
||||
} |
||||
|
||||
updateLieferant(id: number) { |
||||
let res: any; |
||||
this.liefer = {id:0,liefNrExt:0, name:''}; |
||||
this.dbx.getLieferant(id) |
||||
.subscribe(result => { |
||||
res = result; |
||||
this.liefer.id = res.id; |
||||
this.liefer.liefNrExt = res.liefNrExt; |
||||
this.liefer.name = res.name; |
||||
const dialogRef = this.mdAL.open(MdAddLieferantComponent, { width: '650px', data: this.liefer |
||||
}); |
||||
dialogRef.afterClosed() |
||||
.subscribe( resu => { |
||||
this.liefer = resu; |
||||
if(this.liefer) { |
||||
this.dbx.updateLieferant(this.liefer) |
||||
.subscribe( result2 => { |
||||
if (result2 ) { |
||||
confirm("Lieferant mit der ID " + this.liefer.id + " upgedated"); |
||||
this.refresh(); |
||||
}});
|
||||
}}, |
||||
error => console.log(error)); |
||||
this.refresh(); |
||||
}, |
||||
error => console.log(error)); |
||||
} |
||||
|
||||
deleteLieferant(id: number) { |
||||
if(confirm("Lieferant mit der ID " + id.toString() + " wirklich löschen?")) { |
||||
this.dbx.deleteLieferant(id) |
||||
.subscribe(result => { |
||||
|
||||
this.refresh(); |
||||
}, |
||||
error => console.log(error)); |
||||
} |
||||
} |
||||
|
||||
} |
@ -0,0 +1,26 @@
|
||||
<h1 mat-dialog-title> |
||||
Neuen Kunden eingeben/bearbeiten |
||||
</h1> |
||||
<mat-divider></mat-divider> |
||||
<div mat-dialog-content> |
||||
<div> |
||||
<mat-form-field> |
||||
<mat-label>externe Kundennummer</mat-label> |
||||
<input matInput [(ngModel)]="data.kdNrExt" placeholder="externe Kundennummer"> |
||||
<mat-hint></mat-hint> |
||||
</mat-form-field> |
||||
</div> |
||||
<div> |
||||
<mat-form-field> |
||||
<mat-label>Name</mat-label> |
||||
<input matInput [(ngModel)]="data.name" placeholder="Name"> |
||||
<mat-hint></mat-hint> |
||||
</mat-form-field> |
||||
</div> |
||||
|
||||
</div> |
||||
<mat-divider></mat-divider> |
||||
<div mat-dialog-actions> |
||||
<button mat-raised-button #savebutton [mat-dialog-close]="data" cdkFocusInitial> Speichern </button> |
||||
<button mat-raised-button #abortbutton (click)="onNoClick()"> Abbruch </button> |
||||
</div> |
@ -0,0 +1,25 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing'; |
||||
|
||||
import { MdAddKundeComponent } from './md-add-kunde.component'; |
||||
|
||||
describe('MdAddKundeComponent', () => { |
||||
let component: MdAddKundeComponent; |
||||
let fixture: ComponentFixture<MdAddKundeComponent>; |
||||
|
||||
beforeEach(async () => { |
||||
await TestBed.configureTestingModule({ |
||||
declarations: [ MdAddKundeComponent ] |
||||
}) |
||||
.compileComponents(); |
||||
}); |
||||
|
||||
beforeEach(() => { |
||||
fixture = TestBed.createComponent(MdAddKundeComponent); |
||||
component = fixture.componentInstance; |
||||
fixture.detectChanges(); |
||||
}); |
||||
|
||||
it('should create', () => { |
||||
expect(component).toBeTruthy(); |
||||
}); |
||||
}); |
@ -0,0 +1,20 @@
|
||||
import { Component, Inject } from '@angular/core'; |
||||
import {MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog'; |
||||
import { Kunde } from '../kunden-data/kunden-data.component'; |
||||
|
||||
|
||||
@Component({ |
||||
selector: 'app-md-add-kunde', |
||||
templateUrl: './md-add-kunde.component.html', |
||||
styleUrls: ['./md-add-kunde.component.css'] |
||||
}) |
||||
export class MdAddKundeComponent { |
||||
|
||||
constructor(public dialogRef: MatDialogRef<MdAddKundeComponent>, @Inject(MAT_DIALOG_DATA) public data: Kunde) { } |
||||
|
||||
onNoClick(): void { |
||||
this.dialogRef.close(); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,26 @@
|
||||
<h1 mat-dialog-title> |
||||
Neuen Lieferanten eingeben/bearbeiten |
||||
</h1> |
||||
<mat-divider></mat-divider> |
||||
<div mat-dialog-content> |
||||
<div> |
||||
<mat-form-field> |
||||
<mat-label>externe Lieferantennummer</mat-label> |
||||
<input matInput [(ngModel)]="data.liefNrExt" placeholder="externe Lieferantennummer"> |
||||
<mat-hint></mat-hint> |
||||
</mat-form-field> |
||||
</div> |
||||
<div> |
||||
<mat-form-field> |
||||
<mat-label>Name</mat-label> |
||||
<input matInput [(ngModel)]="data.name" placeholder="Name"> |
||||
<mat-hint></mat-hint> |
||||
</mat-form-field> |
||||
</div> |
||||
|
||||
</div> |
||||
<mat-divider></mat-divider> |
||||
<div mat-dialog-actions> |
||||
<button mat-raised-button #savebutton [mat-dialog-close]="data" cdkFocusInitial> Speichern </button> |
||||
<button mat-raised-button #abortbutton (click)="onNoClick()"> Abbruch </button> |
||||
</div> |
@ -0,0 +1,25 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing'; |
||||
|
||||
import { MdAddLieferantComponent } from './md-add-lieferant.component'; |
||||
|
||||
describe('MdAddLieferantComponent', () => { |
||||
let component: MdAddLieferantComponent; |
||||
let fixture: ComponentFixture<MdAddLieferantComponent>; |
||||
|
||||
beforeEach(async () => { |
||||
await TestBed.configureTestingModule({ |
||||
declarations: [ MdAddLieferantComponent ] |
||||
}) |
||||
.compileComponents(); |
||||
}); |
||||
|
||||
beforeEach(() => { |
||||
fixture = TestBed.createComponent(MdAddLieferantComponent); |
||||
component = fixture.componentInstance; |
||||
fixture.detectChanges(); |
||||
}); |
||||
|
||||
it('should create', () => { |
||||
expect(component).toBeTruthy(); |
||||
}); |
||||
}); |
@ -0,0 +1,19 @@
|
||||
import { Component, Inject } from '@angular/core'; |
||||
import {MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog'; |
||||
import { Lieferant } from '../lieferanten-data/lieferanten-data.component'; |
||||
|
||||
@Component({ |
||||
selector: 'app-md-add-lieferant', |
||||
templateUrl: './md-add-lieferant.component.html', |
||||
styleUrls: ['./md-add-lieferant.component.css'] |
||||
}) |
||||
export class MdAddLieferantComponent { |
||||
|
||||
constructor(public dialogRef: MatDialogRef<MdAddLieferantComponent>, @Inject(MAT_DIALOG_DATA) public data: Lieferant) { } |
||||
|
||||
|
||||
onNoClick(): void { |
||||
this.dialogRef.close(); |
||||
} |
||||
|
||||
} |
@ -0,0 +1 @@
|
||||
<h1>Page Not Found!</h1> |
@ -0,0 +1,25 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing'; |
||||
|
||||
import { PageNotFoundComponent } from './page-not-found.component'; |
||||
|
||||
describe('PageNotFoundComponent', () => { |
||||
let component: PageNotFoundComponent; |
||||
let fixture: ComponentFixture<PageNotFoundComponent>; |
||||
|
||||
beforeEach(async () => { |
||||
await TestBed.configureTestingModule({ |
||||
declarations: [ PageNotFoundComponent ] |
||||
}) |
||||
.compileComponents(); |
||||
}); |
||||
|
||||
beforeEach(() => { |
||||
fixture = TestBed.createComponent(PageNotFoundComponent); |
||||
component = fixture.componentInstance; |
||||
fixture.detectChanges(); |
||||
}); |
||||
|
||||
it('should create', () => { |
||||
expect(component).toBeTruthy(); |
||||
}); |
||||
}); |
@ -0,0 +1,15 @@
|
||||
import { Component, OnInit } from '@angular/core'; |
||||
|
||||
@Component({ |
||||
selector: 'app-page-not-found', |
||||
templateUrl: './page-not-found.component.html', |
||||
styleUrls: ['./page-not-found.component.css'] |
||||
}) |
||||
export class PageNotFoundComponent implements OnInit { |
||||
|
||||
constructor() { } |
||||
|
||||
ngOnInit(): void { |
||||
} |
||||
|
||||
} |
@ -0,0 +1,77 @@
|
||||
<h2>Seriennummernpflege</h2> |
||||
<div class="tabelle"> |
||||
<mat-form-field class="tabelle"> |
||||
<input matInput (keyup)="applyFilter($event)" placeholder="Suche"> |
||||
</mat-form-field> |
||||
<div> |
||||
<button mat-icon-button class="mb"><mat-icon>add_circle</mat-icon></button> |
||||
</div> |
||||
<table #table mat-table [dataSource]="dataSource" matSort class="tabelle"> |
||||
|
||||
<ng-container matColumnDef="update"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header></th> |
||||
<td mat-cell *matCellDef="let row"><button mat-icon-button class="mb"><mat-icon>change_circle</mat-icon></button></td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="delete"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header></th> |
||||
<td mat-cell *matCellDef="let row"><button mat-icon-button class="mb"><mat-icon>remove_circle</mat-icon></button></td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="id"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>ID</th> |
||||
<td mat-cell *matCellDef="let row">{{row.id}}</td> |
||||
</ng-container> |
||||
|
||||
<!-- Name Column --> |
||||
<ng-container matColumnDef="artName"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Artikelbezeichnung</th> |
||||
<td mat-cell *matCellDef="let row">{{row.artName}}</td> |
||||
</ng-container> |
||||
|
||||
|
||||
<ng-container matColumnDef="kdName"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Kundenname</th> |
||||
<td mat-cell *matCellDef="let row">{{row.kdName}}</td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="liefName"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Lieferantenname</th> |
||||
<td mat-cell *matCellDef="let row">{{row.liefName}}</td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="serienNr"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Seriennummer</th> |
||||
<td mat-cell *matCellDef="let row">{{row.serienNr}}</td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="ekDat"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Einkaufsdatum</th> |
||||
<td mat-cell *matCellDef="let row">{{row.ekDat}}</td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="vkDat"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Verkaufsdatum</th> |
||||
<td mat-cell *matCellDef="let row">{{row.vkDat}}</td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="garantieBis"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Garantie bis</th> |
||||
<td mat-cell *matCellDef="let row">{{row.garantieBis}}</td> |
||||
</ng-container> |
||||
|
||||
<ng-container matColumnDef="bemerkung"> |
||||
<th mat-header-cell *matHeaderCellDef mat-sort-header>Bemerkung</th> |
||||
<td mat-cell *matCellDef="let row">{{row.bemerkung}}</td> |
||||
</ng-container> |
||||
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr> |
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> |
||||
</table> |
||||
<mat-paginator class="tabelle" |
||||
[pageSizeOptions]="pageSizeOptions" |
||||
showFirstLastButtons> |
||||
</mat-paginator> |
||||
|
||||
</div> |
@ -0,0 +1,25 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing'; |
||||
|
||||
import { SerienNummerDataComponent } from './serien-nummer-data.component'; |
||||
|
||||
describe('SerienNummerDataComponent', () => { |
||||
let component: SerienNummerDataComponent; |
||||
let fixture: ComponentFixture<SerienNummerDataComponent>; |
||||
|
||||
beforeEach(async () => { |
||||
await TestBed.configureTestingModule({ |
||||
declarations: [ SerienNummerDataComponent ] |
||||
}) |
||||
.compileComponents(); |
||||
}); |
||||
|
||||
beforeEach(() => { |
||||
fixture = TestBed.createComponent(SerienNummerDataComponent); |
||||
component = fixture.componentInstance; |
||||
fixture.detectChanges(); |
||||
}); |
||||
|
||||
it('should create', () => { |
||||
expect(component).toBeTruthy(); |
||||
}); |
||||
}); |
@ -0,0 +1,164 @@
|
||||
import { Component, AfterViewInit, ViewChild, Output, EventEmitter, ChangeDetectorRef } from '@angular/core'; |
||||
import { DbXchangeService } from '../shared/db-xchange.service' |
||||
import { MatTableDataSource } from '@angular/material/table'; |
||||
import { MatSort } from '@angular/material/sort'; |
||||
import { MatPaginator } from '@angular/material/paginator'; |
||||
import { SelectionModel } from '@angular/cdk/collections'; |
||||
import { MatInput } from '@angular/material/input'; |
||||
import { MatFormField } from '@angular/material/form-field'; |
||||
import { MatDialog } from '@angular/material/dialog'; |
||||
import { SerienNummer } from '../server-data/server-data.component'; |
||||
|
||||
@Component({ |
||||
selector: 'app-serien-nummer-data', |
||||
templateUrl: './serien-nummer-data.component.html', |
||||
styleUrls: ['./serien-nummer-data.component.css'] |
||||
}) |
||||
export class SerienNummerDataComponent implements AfterViewInit { |
||||
|
||||
dataSource!: MatTableDataSource<SerienNummer>; |
||||
data: SerienNummer[] = [{id:0, artId:0, artName:'', kdId:0, kdName:'', liefId:0, liefName:'', serienNr:'', ekDat:'', vkDat:'', garantieBis:'', bemerkung:''}]; |
||||
res: any; |
||||
selection: SelectionModel<SerienNummer>; |
||||
pageSizeOptions: number[] = [5, 10, 20]; |
||||
serial: SerienNummer = {id:0, artId:0, artName:'', kdId:0, kdName:'', liefId:0, liefName:'', serienNr:'', ekDat:'', vkDat:'', garantieBis:'', bemerkung:''}; |
||||
|
||||
|
||||
@ViewChild(MatSort) |
||||
sort!: MatSort; |
||||
@ViewChild(MatPaginator, { static: true }) |
||||
paginator!: MatPaginator; |
||||
@Output() sendEvent = new EventEmitter<string>(); |
||||
|
||||
displayedColumns = ['update', 'delete', 'id', 'artName', 'kdName', 'liefName', 'serienNr', 'ekDat', 'vkDat', 'garantieBis', 'bemerkung']; |
||||
|
||||
constructor(private dbx: DbXchangeService, public mdAL: MatDialog, private changeDetector: ChangeDetectorRef) {
|
||||
const initialSelection: SerienNummer[] | undefined = [] ; |
||||
const allowMultiSelect = false; |
||||
this.selection = new SelectionModel<SerienNummer>(allowMultiSelect, initialSelection); |
||||
|
||||
} |
||||
|
||||
ngAfterViewInit(): void { |
||||
this.paginator.pageSize = 10; |
||||
this.refresh(); |
||||
} |
||||
|
||||
applyFilter(event: Event) { |
||||
const filterValue = (event.target as HTMLInputElement).value; |
||||
filterValue.trim().toLowerCase(); |
||||
this.dataSource.filter = filterValue; |
||||
} |
||||
|
||||
masterToggle() { |
||||
this.isAllSelected() ? |
||||
this.selection.clear() : |
||||
this.dataSource.data.forEach(row => this.selection.select(row)); |
||||
} |
||||
|
||||
isAllSelected() { |
||||
const numSelected = this.selection.selected.length; |
||||
const numRows = this.dataSource.data.length; |
||||
return numSelected == numRows; |
||||
} |
||||
|
||||
transform( res: any) { |
||||
var tfd: SerienNummer[] = [{id:0, artId:0, artName:'', kdId:0, kdName:'', liefId:0, liefName:'', serienNr:'', ekDat:'', vkDat:'', garantieBis:'', bemerkung:''}]; |
||||
let i = 0; |
||||
|
||||
for(let blubb of res) { |
||||
tfd[i].id = blubb.id; |
||||
//tfd[i].liefNrExt = blubb.liefNrExt;
|
||||
//tfd[i].name = blubb.bezeichnung;
|
||||
i++; |
||||
} |
||||
return tfd; |
||||
} |
||||
|
||||
refresh() { |
||||
this.data = [{id:0, artId:0, artName:'', kdId:0, kdName:'', liefId:0, liefName:'', serienNr:'', ekDat:'', vkDat:'', garantieBis:'', bemerkung:''}]; |
||||
this.dbx.getAllSerials() |
||||
.subscribe(result => { |
||||
this.res = result; |
||||
//this.data = this.transform(this.res);
|
||||
this.dataSource = new MatTableDataSource(this.res); |
||||
this.dataSource.paginator = this.paginator; |
||||
this.dataSource.sort = this.sort; |
||||
this.changeDetector.detectChanges(); |
||||
}, |
||||
error => console.log(error)); |
||||
} |
||||
|
||||
/*addLieferant() { |
||||
|
||||
let res: any; |
||||
this.serial = {id:0, artId:0, artName:'', kdId:0, kdName:'', liefId:0, liefName:'', serienNr:'', ekDat:'', vkDat:'', garantieBis:'', bemerkung:''}; |
||||
const dialogRef = this.mdAL.open(MdAddLieferantComponent, { |
||||
width: '650px', data: this.liefer |
||||
}); |
||||
dialogRef.afterClosed(). |
||||
subscribe(result => {
|
||||
res = result; |
||||
res.liefNrExt = Number (res.liefNrExt) |
||||
this.liefer = res;
|
||||
console.log('nach dem Dialog', this.liefer); |
||||
if (this.liefer) { |
||||
|
||||
this.dbx.addLieferant(this.liefer) |
||||
.subscribe(result2 => { |
||||
res = result2; |
||||
if( res ) { |
||||
console.log('hat funktioniert', res) |
||||
confirm("Lieferant mit der ID " + res.id.toString() + " wurde angelegt"); |
||||
this.refresh(); |
||||
} |
||||
else { |
||||
console.log('hat nicht funktioniert'); |
||||
} |
||||
|
||||
} ); |
||||
} |
||||
this.refresh();
|
||||
}); |
||||
} |
||||
|
||||
updateLieferant(id: number) { |
||||
let res: any; |
||||
this.liefer = {id:0,liefNrExt:0, name:''}; |
||||
this.dbx.getLieferant(id) |
||||
.subscribe(result => { |
||||
res = result; |
||||
this.liefer.id = res.id; |
||||
this.liefer.liefNrExt = res.liefNrExt; |
||||
this.liefer.name = res.name; |
||||
const dialogRef = this.mdAL.open(MdAddLieferantComponent, { width: '650px', data: this.liefer |
||||
}); |
||||
dialogRef.afterClosed() |
||||
.subscribe( resu => { |
||||
this.liefer = resu; |
||||
if(this.liefer) { |
||||
this.dbx.updateLieferant(this.liefer) |
||||
.subscribe( result2 => { |
||||
if (result2 ) { |
||||
confirm("Lieferant mit der ID " + this.liefer.id + " upgedated"); |
||||
this.refresh(); |
||||
}});
|
||||
}}, |
||||
error => console.log(error)); |
||||
this.refresh(); |
||||
}, |
||||
error => console.log(error)); |
||||
} |
||||
|
||||
deleteLieferant(id: number) { |
||||
if(confirm("Lieferant mit der ID " + id.toString() + " wirklich löschen?")) { |
||||
this.dbx.deleteLieferant(id) |
||||
.subscribe(result => { |
||||
|
||||
this.refresh(); |
||||
}, |
||||
error => console.log(error)); |
||||
} |
||||
}*/ |
||||
|
||||
} |
Loading…
Reference in new issue