diff --git a/matsen-tool/src/app/app-routing.module.ts b/matsen-tool/src/app/app-routing.module.ts
index e442cf0..8575d07 100644
--- a/matsen-tool/src/app/app-routing.module.ts
+++ b/matsen-tool/src/app/app-routing.module.ts
@@ -9,6 +9,8 @@ import {PartnersDetailComponent} from "@app/partners/partners-detail/partners-de
import {ProductsComponent} from "@app/products/products.component";
import {ProductsDetailComponent} from "@app/products/products-detail/products-detail.component";
import {DocumentsComponent} from "@app/documents/documents.component";
+import {ContactsComponent} from "@app/contacts/contacts.component";
+import {ContactsDetailComponent} from "@app/contacts/contacts-detail/contacts-detail.component";
const accountModule = () => import('./account/account.module').then(x => x.AccountModule);
const usersModule = () => import('./users/users.module').then(x => x.UsersModule);
@@ -44,6 +46,15 @@ const routes: Routes = [
{path: 'detail', component: PartnersDetailComponent, data: {dataType: 'service-detail'}},
]
},
+ {
+ path: 'contacts',
+ component: TwoColumnComponent,
+ canActivate: [AuthGuard],
+ children: [
+ {path: '', component: ContactsComponent},
+ {path: ':id', component: ContactsDetailComponent},
+ ]
+ },
{
path: 'products',
component: TwoColumnComponent,
diff --git a/matsen-tool/src/app/app.module.ts b/matsen-tool/src/app/app.module.ts
index cbcf247..7476173 100644
--- a/matsen-tool/src/app/app.module.ts
+++ b/matsen-tool/src/app/app.module.ts
@@ -15,16 +15,19 @@ import {MatCardModule} from "@angular/material/card";
import {TranslateLoader, TranslateModule} from "@ngx-translate/core";
import {TranslateHttpLoader} from "@ngx-translate/http-loader";
import {NgOptimizedImage} from "@angular/common";
-import {PartnersComponent} from './partners/partners.component';
import {BrowserAnimationsModule} from "@angular/platform-browser/animations";
import {TwoColumnComponent} from './layout/two-column/two-column.component';
+import {ProductsComponent} from './products/products.component';
+import {ProductsDetailComponent} from './products/products-detail/products-detail.component';
+import {DocumentsComponent} from './documents/documents.component';
+import {PartnersComponent} from './partners/partners.component';
import {PartnersDetailComponent} from './partners/partners-detail/partners-detail.component';
-import { ProductsComponent } from './products/products.component';
-import { ProductsDetailComponent } from './products/products-detail/products-detail.component';
-import { DocumentsComponent } from './documents/documents.component';
-import { NewContactComponent } from './partners/new-contact/new-contact.component';
-import { ModalComponent } from './_components/modal/modal.component';
+import {NewContactComponent} from './partners/new-contact/new-contact.component';
+import {ContactsComponent} from './contacts/contacts.component';
+import {ContactsDetailComponent} from './contacts/contacts-detail/contacts-detail.component';
+import {ModalComponent} from './_components/modal/modal.component';
import {PropertyInterceptor} from "@app/_helpers/property.interceptor";
+import {MatPaginatorModule} from "@angular/material/paginator";
export function apiConfigFactory(): Configuration {
const params: ConfigurationParameters = {
@@ -58,19 +61,22 @@ export function HttpLoaderFactory(http: HttpClient) {
AppRoutingModule,
MatCardModule,
NgOptimizedImage,
- PartnersComponent
+ PartnersComponent,
+ MatPaginatorModule
],
declarations: [
AppComponent,
AlertComponent,
HomeComponent,
TwoColumnComponent,
- PartnersDetailComponent,
ProductsComponent,
ProductsDetailComponent,
DocumentsComponent,
+ ModalComponent,
+ PartnersDetailComponent,
NewContactComponent,
- ModalComponent
+ ContactsComponent,
+ ContactsDetailComponent
],
providers: [
{provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true},
diff --git a/matsen-tool/src/app/contacts/contacts-detail/contacts-detail.component.html b/matsen-tool/src/app/contacts/contacts-detail/contacts-detail.component.html
new file mode 100644
index 0000000..b65b909
--- /dev/null
+++ b/matsen-tool/src/app/contacts/contacts-detail/contacts-detail.component.html
@@ -0,0 +1,119 @@
+
+
+
+
{{contact.firstName}} {{contact.lastName}}
+
+ - Position:
+ - {{contact.position}}
+ - Telefon:
+ - {{contact.phone}}
+ - E-Mail:
+ - {{contact.email}}
+ - Geburtstag:
+ - {{contact.birthday | date:'dd.MM.YYYY'}}
+
+
+
+

+
+
+
+
+
+
+
Notizen
+
+
+
+
+
+
+
12.10.2023
+
Jan Hansen
+
+
+
Neues Tool nutzen
+
Immer alles hier rein schreiben!
+
+
+
+
+
+
+
+
+
+
01.10.2023
+
Jan Hansen
+
+
+
Konditionen
+
Wir gewähren immer 10% Rabatt bei Bestellungen über 20.000 €.
+
+
+
+
+
+
+
02.10.2023
+
Daniel Knudsen
+
+
+
Achja! Gut zu wissen!
+
+
+
+
+
+
+
+
+
+
12.09.2023
+
Florian Eisenmenger
+
+
+
Ausland - Schwer erreichbar
+
Peter Müller ist der Chef, aber schwer erreichbar. Am besten Mobil probieren!
+
+
+
+
+
+
+
04.10.2023
+
Jan Hansen
+
+
+
Leider geht er mobil selten dran. Eher E-Mails schicken!
+
+
+
+
+
+
+
02.10.2023
+
Florian Eisenmenger
+
+
+
Ich habe mit FAX die besten Erfahrungen gemacht...
+
+
+
+
+
+
+
+
diff --git a/matsen-tool/src/app/contacts/contacts-detail/contacts-detail.component.scss b/matsen-tool/src/app/contacts/contacts-detail/contacts-detail.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/matsen-tool/src/app/contacts/contacts-detail/contacts-detail.component.spec.ts b/matsen-tool/src/app/contacts/contacts-detail/contacts-detail.component.spec.ts
new file mode 100644
index 0000000..bfba3e3
--- /dev/null
+++ b/matsen-tool/src/app/contacts/contacts-detail/contacts-detail.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ContactsDetailComponent } from './contacts-detail.component';
+
+describe('ContactsDetailComponent', () => {
+ let component: ContactsDetailComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ContactsDetailComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(ContactsDetailComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/matsen-tool/src/app/contacts/contacts-detail/contacts-detail.component.ts b/matsen-tool/src/app/contacts/contacts-detail/contacts-detail.component.ts
new file mode 100644
index 0000000..e155eba
--- /dev/null
+++ b/matsen-tool/src/app/contacts/contacts-detail/contacts-detail.component.ts
@@ -0,0 +1,75 @@
+import {AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core';
+import {environment} from "@environments/environment";
+import {ContactJsonld, ContactService} from "@app/core/api/v1";
+import {Subscription} from "rxjs";
+import {ActivatedRoute} from "@angular/router";
+import {MatPaginator, MatPaginatorIntl, PageEvent} from "@angular/material/paginator";
+import {MatTableDataSource} from "@angular/material/table";
+
+@Component({
+ selector: 'app-contacts-detail',
+ templateUrl: './contacts-detail.component.html',
+ styleUrl: './contacts-detail.component.scss'
+})
+export class ContactsDetailComponent implements OnInit, AfterViewInit {
+ @ViewChild(MatPaginator) postsPaginator: MatPaginator;
+
+ protected readonly environment = environment;
+ protected contact: ContactJsonld;
+ protected id: string;
+ protected contactSub: Subscription;
+
+ protected postsDataSource;
+ protected postsLength: number;
+ protected postsPageEvent: PageEvent;
+ protected postsPageSize: number;
+ protected postsPageIndex: number;
+
+ constructor(
+ private contactService: ContactService,
+ private route: ActivatedRoute
+ ) {
+ this.id = "";
+ this.contact = {} as ContactJsonld;
+
+ this.contactSub = new Subscription();
+
+ // TODO: Change Jsonld
+ this.postsPaginator = new MatPaginator(new MatPaginatorIntl(), ChangeDetectorRef.prototype);
+ this.postsDataSource = new MatTableDataSource; //(this.contacts)
+ this.postsLength = 0;
+ this.postsPageEvent = new PageEvent();
+ this.postsPageSize = 30;
+ this.postsPageIndex = 0;
+ }
+
+ ngOnInit() {
+ this.route.params.subscribe(params => {
+ this.id = params['id'];
+ });
+ this.getData();
+ }
+
+ ngAfterViewInit() {
+ this.postsDataSource.paginator = this.postsPaginator;
+ }
+
+ getData() {
+ // switch over this.dataType (customers, etc.)
+ this.contactSub = this.contactService.contactsIdGet(
+ this.id
+ ).subscribe(
+ data => {
+ this.contact = data;
+ }
+ );
+ }
+
+ postsHandlePageEvent(e: PageEvent) {
+ this.postsPageEvent = e;
+ this.postsLength = e.length;
+ this.postsPageIndex = e.pageIndex.valueOf();
+ this.postsPageSize = e.pageSize.valueOf();
+ // this.getData();
+ }
+}
diff --git a/matsen-tool/src/app/contacts/contacts.component.html b/matsen-tool/src/app/contacts/contacts.component.html
new file mode 100644
index 0000000..e400718
--- /dev/null
+++ b/matsen-tool/src/app/contacts/contacts.component.html
@@ -0,0 +1 @@
+contacts works!
diff --git a/matsen-tool/src/app/contacts/contacts.component.scss b/matsen-tool/src/app/contacts/contacts.component.scss
new file mode 100644
index 0000000..e69de29
diff --git a/matsen-tool/src/app/contacts/contacts.component.spec.ts b/matsen-tool/src/app/contacts/contacts.component.spec.ts
new file mode 100644
index 0000000..f394575
--- /dev/null
+++ b/matsen-tool/src/app/contacts/contacts.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ContactsComponent } from './contacts.component';
+
+describe('ContactsComponent', () => {
+ let component: ContactsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ContactsComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(ContactsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/matsen-tool/src/app/contacts/contacts.component.ts b/matsen-tool/src/app/contacts/contacts.component.ts
new file mode 100644
index 0000000..9c80976
--- /dev/null
+++ b/matsen-tool/src/app/contacts/contacts.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'app-contacts',
+ templateUrl: './contacts.component.html',
+ styleUrl: './contacts.component.scss'
+})
+export class ContactsComponent {
+
+}
diff --git a/matsen-tool/src/app/core/api/v1/.openapi-generator/FILES b/matsen-tool/src/app/core/api/v1/.openapi-generator/FILES
index 812c87e..1c2dc22 100644
--- a/matsen-tool/src/app/core/api/v1/.openapi-generator/FILES
+++ b/matsen-tool/src/app/core/api/v1/.openapi-generator/FILES
@@ -1,4 +1,5 @@
.gitignore
+.openapi-generator-ignore
README.md
api.module.ts
api/api.ts
diff --git a/matsen-tool/src/app/partners/partners-detail/partners-detail.component.html b/matsen-tool/src/app/partners/partners-detail/partners-detail.component.html
index eef2731..d09aebc 100644
--- a/matsen-tool/src/app/partners/partners-detail/partners-detail.component.html
+++ b/matsen-tool/src/app/partners/partners-detail/partners-detail.component.html
@@ -41,20 +41,28 @@
{{contact.firstName}} {{contact.lastName}}
-
{{contact.email}}
+
{{contact.email}}
{{contact.phone}}
{{contact.position}}
-

+
+
+
@@ -109,6 +117,12 @@
+
+
@@ -200,4 +214,10 @@
Kommentieren
+
+
diff --git a/matsen-tool/src/app/partners/partners-detail/partners-detail.component.ts b/matsen-tool/src/app/partners/partners-detail/partners-detail.component.ts
index 168aac8..5e20cf2 100644
--- a/matsen-tool/src/app/partners/partners-detail/partners-detail.component.ts
+++ b/matsen-tool/src/app/partners/partners-detail/partners-detail.component.ts
@@ -1,38 +1,61 @@
-import {Component, OnInit} from '@angular/core';
+import {AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core';
import {NgbModal} from "@ng-bootstrap/ng-bootstrap";
import {ModalComponent} from "@app/_components/modal/modal.component";
import {NewContactComponent} from "@app/partners/new-contact/new-contact.component";
-import {ActivatedRoute} from "@angular/router";
-import {ContactJsonld, ContactService, MediaObjectService, PartnerJsonld, PartnerService} from "@app/core/api/v1";
+import {ActivatedRoute, Router} from "@angular/router";
+import {ContactJsonld, ContactService, PartnerJsonld, PartnerService} from "@app/core/api/v1";
import {Subscription} from "rxjs";
import {environment} from "@environments/environment";
import {ApiConverter} from "@app/_helpers/api.converter";
+import {MatPaginator, MatPaginatorIntl, PageEvent} from "@angular/material/paginator";
+import {MatTableDataSource} from "@angular/material/table";
@Component({
selector: 'app-partners-detail',
templateUrl: './partners-detail.component.html',
styleUrl: './partners-detail.component.scss'
})
-export class PartnersDetailComponent implements OnInit {
- private closeResult = '';
+export class PartnersDetailComponent implements OnInit, AfterViewInit {
+ @ViewChild(MatPaginator) contactsPaginator: MatPaginator;
+ @ViewChild(MatPaginator) tasksPaginator: MatPaginator;
+ @ViewChild(MatPaginator) postsPaginator: MatPaginator;
+
+ protected readonly environment = environment;
protected id: string;
protected partnerDetailSub: Subscription;
protected partner: PartnerJsonld;
protected partnerLogoSub: Subscription;
- protected partnerLogo: string|null|undefined;
+ protected partnerLogo: string | null | undefined;
protected partnerContactsSub: Subscription;
protected contacts: Array;
- // protected contactImageSub: Subscription;
- // protected contactImage: string|null|undefined;
+
+ protected contactsDataSource;
+ protected contactsLength: number;
+ protected contactsPageEvent: PageEvent;
+ protected contactsPageSize: number;
+ protected contactsPageIndex: number;
+
+ protected tasksDataSource;
+ protected tasksLength: number;
+ protected tasksPageEvent: PageEvent;
+ protected tasksPageSize: number;
+ protected tasksPageIndex: number;
+
+ protected postsDataSource;
+ protected postsLength: number;
+ protected postsPageEvent: PageEvent;
+ protected postsPageSize: number;
+ protected postsPageIndex: number;
protected readonly ModalComponent = ModalComponent;
+
constructor(
+ private router: Router,
private modalService: NgbModal,
private route: ActivatedRoute,
private partnerService: PartnerService,
- private mediaObjectService: MediaObjectService,
private contactService: ContactService
) {
this.id = "";
@@ -42,9 +65,31 @@ export class PartnersDetailComponent implements OnInit {
this.partnerLogo = "";
this.partnerContactsSub = new Subscription();
this.contacts = [];
- // this.contactImageSub = new Subscription();
- // this.contactImage = "";
+
+ this.contactsPaginator = new MatPaginator(new MatPaginatorIntl(), ChangeDetectorRef.prototype);
+ this.contactsDataSource = new MatTableDataSource(this.contacts);
+ this.contactsLength = 0;
+ this.contactsPageEvent = new PageEvent();
+ this.contactsPageSize = 6;
+ this.contactsPageIndex = 0;
+
+ // TODO: Change Jsonld
+ this.tasksPaginator = new MatPaginator(new MatPaginatorIntl(), ChangeDetectorRef.prototype);
+ this.tasksDataSource = new MatTableDataSource(this.contacts);
+ this.tasksLength = 0;
+ this.tasksPageEvent = new PageEvent();
+ this.tasksPageSize = 10;
+ this.tasksPageIndex = 0;
+
+ // TODO: Change Jsonld
+ this.postsPaginator = new MatPaginator(new MatPaginatorIntl(), ChangeDetectorRef.prototype);
+ this.postsDataSource = new MatTableDataSource(this.contacts);
+ this.postsLength = 0;
+ this.postsPageEvent = new PageEvent();
+ this.postsPageSize = 30;
+ this.postsPageIndex = 0;
}
+
openModalNewContact() {
const modalRef = this.modalService.open(ModalComponent);
modalRef.componentInstance.dynamicComponent = NewContactComponent;
@@ -53,13 +98,17 @@ export class PartnersDetailComponent implements OnInit {
ngOnInit() {
this.route.params.subscribe(params => {
this.id = params['id'];
- // Hier kannst du die Logik für die Anzeige der Details für den bestimmten Partner implementieren
});
this.getData();
}
- getData()
- {
+ ngAfterViewInit() {
+ this.contactsDataSource.paginator = this.contactsPaginator;
+ this.tasksDataSource.paginator = this.tasksPaginator;
+ this.postsDataSource.paginator = this.postsPaginator;
+ }
+
+ getData() {
this.partnerDetailSub = this.partnerService.partnersIdGet(
this.id
).subscribe(
@@ -67,28 +116,46 @@ export class PartnersDetailComponent implements OnInit {
this.partner = data;
this.partnerContactsSub = this.contactService.contactsGetCollection(
- 1, ApiConverter.extractId(this.partner.id)
+ this.contactsPageIndex + 1,
+ ApiConverter.extractId(this.partner.id)
).subscribe(
data => {
- console.log(data);
this.contacts = data["hydra:member"];
- console.log(this.contacts);
-
- // let imageUrl: string = typeof data.logo === 'string' ? data.logo : "";
- // this.contactImageSub = this.mediaObjectService.mediaObjectsIdGet(
- // // logoUrl
- // "4"
- // ).subscribe(
- // data => {
- // this.contactImage = data.contentUrl;
- // console.log(this.partnerLogo);
- // }
- // );
+ this.contactsLength = Number(data["hydra:totalItems"]);
+ this.contactsPaginator.length = this.contactsLength;
}
)
}
);
}
- protected readonly environment = environment;
+ contactsHandlePageEvent(e: PageEvent) {
+ this.contactsPageEvent = e;
+ this.contactsLength = e.length;
+ this.contactsPageIndex = e.pageIndex.valueOf();
+ this.contactsPageSize = e.pageSize.valueOf();
+ this.getData();
+ }
+
+ tasksHandlePageEvent(e: PageEvent) {
+ this.tasksPageEvent = e;
+ this.tasksLength = e.length;
+ this.tasksPageIndex = e.pageIndex.valueOf();
+ this.tasksPageSize = e.pageSize.valueOf();
+ // this.getData();
+ }
+
+ postsHandlePageEvent(e: PageEvent) {
+ this.postsPageEvent = e;
+ this.postsLength = e.length;
+ this.postsPageIndex = e.pageIndex.valueOf();
+ this.postsPageSize = e.pageSize.valueOf();
+ // this.getData();
+ }
+
+ navigateToContactDetails(element: any) {
+ const contact: ContactJsonld = element as ContactJsonld;
+ console.log(ApiConverter.extractId(contact.id));
+ this.router.navigate(['/contacts', ApiConverter.extractId(contact.id)]);
+ }
}
diff --git a/matsen-tool/src/app/partners/partners.component.html b/matsen-tool/src/app/partners/partners.component.html
index c4b8895..203ffa3 100644
--- a/matsen-tool/src/app/partners/partners.component.html
+++ b/matsen-tool/src/app/partners/partners.component.html
@@ -6,7 +6,7 @@
Nr.
{{ (currentPageSize * currentPageIndex) + dataSource.filteredData.indexOf(element) + 1 }}
+ *matCellDef="let element">{{ (pageSize * pageIndex) + dataSource.filteredData.indexOf(element) + 1 }}
|
@@ -14,7 +14,7 @@
Partner
|
- {{ element.name }} |
+ {{ element.name }} |
@@ -39,11 +39,11 @@
-
+ [pageSize]="pageSize"
+ [pageIndex]="pageIndex"
+ showFirstLastButtons>
diff --git a/matsen-tool/src/app/partners/partners.component.ts b/matsen-tool/src/app/partners/partners.component.ts
index ae03966..af90945 100644
--- a/matsen-tool/src/app/partners/partners.component.ts
+++ b/matsen-tool/src/app/partners/partners.component.ts
@@ -21,10 +21,6 @@ export class PartnersComponent implements OnInit, AfterViewInit {
protected partnersSub: Subscription;
protected partners: Array;
- protected length: number;
- protected pageEvent: PageEvent;
- protected currentPageSize: number;
- protected currentPageIndex: number;
protected nameOrderAsc: OrderFilter;
protected cityOrderAsc: OrderFilter;
@@ -32,7 +28,12 @@ export class PartnersComponent implements OnInit, AfterViewInit {
protected dataType!: string;
protected displayedColumns: string[];
+
protected dataSource;
+ protected length: number;
+ protected pageEvent: PageEvent;
+ protected pageSize: number;
+ protected pageIndex: number;
constructor(
private route: ActivatedRoute,
@@ -51,10 +52,10 @@ export class PartnersComponent implements OnInit, AfterViewInit {
this.websiteOrderAsc = OrderFilter.Asc;
this.dataSource = new MatTableDataSource(this.partners);
- this.pageEvent = new PageEvent();
this.length = 0;
- this.currentPageSize = 10;
- this.currentPageIndex = 0;
+ this.pageEvent = new PageEvent();
+ this.pageSize = 10;
+ this.pageIndex = 0;
}
ngOnInit() {
@@ -70,7 +71,7 @@ export class PartnersComponent implements OnInit, AfterViewInit {
/** Announce the change in sort state for assistive technology. */
onSortChange(sortState: Sort) {
// Reset page index to first page
- this.currentPageIndex = 0;
+ this.pageIndex = 0;
let order: OrderFilter;
if (sortState.direction === "") {
@@ -96,14 +97,13 @@ export class PartnersComponent implements OnInit, AfterViewInit {
this.getData();
}
- getData()
- {
+ getData() {
// switch over this.dataType (customers, etc.)
this.partnersSub = this.partnerService.partnersGetCollection(
- this.currentPageIndex + 1,
+ this.pageIndex + 1,
this.dataType,
undefined,
- this.nameOrderAsc,
+ this.nameOrderAsc,
this.cityOrderAsc,
this.websiteOrderAsc
).subscribe(
@@ -120,18 +120,14 @@ export class PartnersComponent implements OnInit, AfterViewInit {
handlePageEvent(e: PageEvent) {
this.pageEvent = e;
this.length = e.length;
- this.currentPageIndex = e.pageIndex.valueOf();
- this.currentPageSize = e.pageSize.valueOf();
+ this.pageIndex = e.pageIndex.valueOf();
+ this.pageSize = e.pageSize.valueOf();
this.getData();
}
- navigateToDetails(element: any) {
+ navigateToPartnerDetails(element: any) {
const partner: PartnerJsonld = element as PartnerJsonld;
- // this.partnerService.setPartnerData(partner);
- //console.log(partner['@id']);
console.log(ApiConverter.extractId(partner.id));
this.router.navigate(['/customers', ApiConverter.extractId(partner.id)]);
}
-
- protected readonly PartnerJsonld = PartnerJsonld;
}