diff --git a/matsen-tool/src/app/_components/paging/paging.component.ts b/matsen-tool/src/app/_components/paging/paging.component.ts index e3318bc..e0a871a 100644 --- a/matsen-tool/src/app/_components/paging/paging.component.ts +++ b/matsen-tool/src/app/_components/paging/paging.component.ts @@ -4,6 +4,7 @@ import {NgbModalOptions} from "@ng-bootstrap/ng-bootstrap"; import {Observable, throwError} from "rxjs"; import {MatTableDataSource} from "@angular/material/table"; import {AppHelperService} from "@app/_helpers/app-helper.service"; +import {Sort} from "@angular/material/sort"; @Component({ selector: 'app-paging', @@ -40,13 +41,9 @@ export class PagingComponent implements OnInit { } ngAfterViewInit() { - - //this.dataSource = this.paginator; -console.log('paging after init'); - //this.getDataFunction(); } - initData() { + getData() { this.getDataFunction(); } @@ -58,6 +55,11 @@ console.log('paging after init'); this.getDataFunction(); } + resetPageIndex(): void + { + this.pageIndex = 0; + } + getPageIndex(): number { return this.pageIndex + 1; } diff --git a/matsen-tool/src/app/_views/contacts/contact-list/contact-list.component.ts b/matsen-tool/src/app/_views/contacts/contact-list/contact-list.component.ts index 5fa6b5b..96abd12 100644 --- a/matsen-tool/src/app/_views/contacts/contact-list/contact-list.component.ts +++ b/matsen-tool/src/app/_views/contacts/contact-list/contact-list.component.ts @@ -35,7 +35,7 @@ export class ContactListComponent implements OnInit, AfterViewInit { } ngAfterViewInit(): void { - this.pagingComponent.initData(); + this.pagingComponent.getData(); } getData = () => { diff --git a/matsen-tool/src/app/_views/partners/partner-list/partner-list.component.html b/matsen-tool/src/app/_views/partners/partner-list/partner-list.component.html index 88dcace..dbde17f 100644 --- a/matsen-tool/src/app/_views/partners/partner-list/partner-list.component.html +++ b/matsen-tool/src/app/_views/partners/partner-list/partner-list.component.html @@ -1 +1,65 @@ -

partner-list works!

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ {{ 'overview.number' | translate }} + {{ pagingComponent.getPageSize() * (pagingComponent.getPageIndex()-1) + dataSource.filteredData.indexOf(element) + 1 }} + + {{ 'overview.logo' | translate }} + + + + {{ partnerColumnHeadline }} + + {{ element.name }} + + {{ 'overview.address' | translate }} + {{ element.street }} {{ element.streetNo }} +
{{ element.zip }} {{ element.city }} +
{{ element.country }} +
+ {{ 'overview.website' | translate }} + + {{ element.website }} +
+
+
\ No newline at end of file diff --git a/matsen-tool/src/app/_views/partners/partner-list/partner-list.component.ts b/matsen-tool/src/app/_views/partners/partner-list/partner-list.component.ts index e63f042..91a6b1c 100644 --- a/matsen-tool/src/app/_views/partners/partner-list/partner-list.component.ts +++ b/matsen-tool/src/app/_views/partners/partner-list/partner-list.component.ts @@ -1,6 +1,17 @@ -import {AfterViewInit, Component, OnInit, ViewChild} from '@angular/core'; +import {AfterViewInit, Component, Input, OnInit, ViewChild} from '@angular/core'; import {PagingComponent} from "@app/_components/paging/paging.component"; import {AppHelperService} from "@app/_helpers/app-helper.service"; +import {MatSort, Sort} from "@angular/material/sort"; +import {Subscription} from "rxjs"; +import {PartnerJsonld, PartnerService} from "@app/core/api/v1"; +import {OrderFilter} from "@app/_models/orderFilter"; +import {ActivatedRoute, Router} from "@angular/router"; +import {NgbModal} from "@ng-bootstrap/ng-bootstrap"; +import {TranslateService} from "@ngx-translate/core"; +import {MatTableDataSource} from "@angular/material/table"; +import {NewPartnerComponent} from "@app/_views/partners/new-partner/new-partner.component"; +import {NewTaskComponent} from "@app/_views/tasks/new-task/new-task.component"; +import TypeEnum = PartnerJsonld.PartnerTypeEnum; @Component({ selector: 'app-partner-list', @@ -9,18 +20,108 @@ import {AppHelperService} from "@app/_helpers/app-helper.service"; }) export class PartnerListComponent implements OnInit, AfterViewInit { + @Input("partnerType") partnerType!: string; + @ViewChild(MatSort) partnersSort; @ViewChild("pagingComponent", { static: false }) pagingComponent!: PagingComponent; + protected partnersSub: Subscription; + protected partners: Array; + protected dataSource; + + protected nameOrderAsc: OrderFilter; + protected cityOrderAsc: OrderFilter; + protected websiteOrderAsc: OrderFilter; + + protected partnerColumnHeadline: string; + protected displayedColumns!: string[]; constructor( + private route: ActivatedRoute, + private partnerService: PartnerService, + private router: Router, + private translateService: TranslateService, protected appHelperService: AppHelperService, ) { + this.displayedColumns = ['pos', 'image', 'name', 'address', 'website']; + this.partnersSort = new MatSort(); + this.partnersSub = new Subscription(); + this.partners = []; + + this.nameOrderAsc = OrderFilter.Asc; + this.cityOrderAsc = OrderFilter.Asc; + this.websiteOrderAsc = OrderFilter.Asc; + + this.dataSource = new MatTableDataSource(this.partners); + this.partnerColumnHeadline = ""; + } + + ngOnInit() { + this.translateService.get('basic.' + this.partnerType + 'One').subscribe((translation: string) => { + this.partnerColumnHeadline = translation; + }); + } + + ngAfterViewInit() { + this.dataSource.sort = this.partnersSort; + this.dataSource.paginator = this.pagingComponent.paginator; + this.pagingComponent.getData(); + } + + getData = () => { + this.partnersSub = this.partnerService.partnersGetCollection( + this.pagingComponent.getPageIndex(), + this.pagingComponent.getPageSize(), + this.partnerType, + undefined, + undefined, + this.nameOrderAsc, + this.cityOrderAsc, + this.websiteOrderAsc + ).subscribe( + data => { + this.partners = data["hydra:member"]; + this.dataSource = new MatTableDataSource(this.partners); + this.pagingComponent.dataLength = Number(data["hydra:totalItems"]); + } + ); + // switch over this.dataType (customers, etc.) + } + + onSortChange = (sortState: Sort) => { + this.pagingComponent.resetPageIndex() + + let order: OrderFilter; + if (sortState.direction === "") { + order = OrderFilter.Undefined; + } else { + order = sortState.direction; + } + + this.nameOrderAsc = OrderFilter.Undefined; + this.cityOrderAsc = OrderFilter.Undefined; + this.websiteOrderAsc = OrderFilter.Undefined; + switch (sortState.active) { + case "name": + this.nameOrderAsc = order; + break; + case "address": + this.cityOrderAsc = order; + break; + case "website": + this.websiteOrderAsc = order; + break; + } + this.pagingComponent.getData(); } - ngOnInit(): void { + navigateToPartnerDetails(element: any) { + const partner: PartnerJsonld = element as PartnerJsonld; + this.router.navigate(['/' + partner.partnerType, this.appHelperService.extractId(partner.id)]); } - ngAfterViewInit(): void { - this.pagingComponent.initData(); + openModalNewPartner() { + let partner: PartnerJsonld = {} as PartnerJsonld; + partner.partnerType = this.partnerType as TypeEnum; + this.appHelperService.openModal(NewPartnerComponent, { 'partner': partner }, this.getData); } } diff --git a/matsen-tool/src/app/_views/partners/partners.component.html b/matsen-tool/src/app/_views/partners/partners.component.html index 61152ba..39bbc45 100644 --- a/matsen-tool/src/app/_views/partners/partners.component.html +++ b/matsen-tool/src/app/_views/partners/partners.component.html @@ -1,72 +1,8 @@

{{ headline }}

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- {{ 'overview.number' | translate }} - {{ (partnersPageSize * partnersPageIndex) + partnersDataSource.filteredData.indexOf(element) + 1 }} - - {{ 'overview.logo' | translate }} - - - - {{ partnerNameOne }} - {{ element.name }} - - {{ 'overview.address' | translate }} - {{ element.street }} {{ element.streetNo }} -
{{ element.zip }} {{ element.city }} -
{{ element.country }} -
- {{ 'overview.website' | translate }} - {{ element.website }} -
- - +
\ No newline at end of file diff --git a/matsen-tool/src/app/_views/partners/partners.component.ts b/matsen-tool/src/app/_views/partners/partners.component.ts index f5b4382..4d49086 100644 --- a/matsen-tool/src/app/_views/partners/partners.component.ts +++ b/matsen-tool/src/app/_views/partners/partners.component.ts @@ -1,169 +1,37 @@ -import {AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core'; -import {MatSort, Sort, MatSortModule} from "@angular/material/sort"; -import {MatTableDataSource, MatTableModule} from "@angular/material/table"; -import {ActivatedRoute, Router, RouterLink, RouterLinkActive} from "@angular/router"; -import {Subscription} from "rxjs"; -import {PartnerJsonld, PartnerService} from "@app/core/api/v1"; -import {MatPaginator, MatPaginatorIntl, MatPaginatorModule, PageEvent} from "@angular/material/paginator"; -import {OrderFilter} from "@app/_models/orderFilter"; -import {AppHelperService} from "@app/_helpers/app-helper.service"; -import {NgIf} from "@angular/common"; -import {NgbModal, NgbModalOptions} from "@ng-bootstrap/ng-bootstrap"; -import {NewPartnerComponent} from "@app/_views/partners/new-partner/new-partner.component"; -import {TranslateModule, TranslateService} from "@ngx-translate/core"; -import {ModalStatus} from "@app/_helpers/modal.states"; -import TypeEnum = PartnerJsonld.PartnerTypeEnum; +import {AfterViewInit, Component, OnInit, ViewChild} from '@angular/core'; +import {ActivatedRoute} from "@angular/router"; +import {TranslateService} from "@ngx-translate/core"; +import {PartnerListComponent} from "@app/_views/partners/partner-list/partner-list.component"; @Component({ - selector: 'app-partners', + selector: 'app-partner', templateUrl: './partners.component.html', styleUrl: './partners.component.scss', }) export class PartnersComponent implements OnInit, AfterViewInit { - @ViewChild(MatSort) partnersSort; - @ViewChild(MatPaginator) partnersPaginator: MatPaginator; - protected partnersSub: Subscription; - protected partners: Array; + @ViewChild("partnerList", { static: false }) partnerList!: PartnerListComponent; - protected nameOrderAsc: OrderFilter; - protected cityOrderAsc: OrderFilter; - protected websiteOrderAsc: OrderFilter; - - protected dataType!: string; + protected partnerType!: string; protected headline: string; - protected partnerNameOne: string; - protected displayedColumns: string[]; - - protected partnersDataSource; - protected partnersLength: number; - protected partnersPageEvent: PageEvent; - protected partnersPageSize: number; - protected partnersPageIndex: number; - - protected modalOptions: NgbModalOptions = { - centered: true - }; + protected partnerColumnHeadline: string; constructor( private route: ActivatedRoute, - private partnerService: PartnerService, - private router: Router, - private modalService: NgbModal, private translateService: TranslateService, - protected appHelperService: AppHelperService, ) { - this.partnersSort = new MatSort(); - this.partnersPaginator = new MatPaginator(new MatPaginatorIntl(), ChangeDetectorRef.prototype); - - this.partnersSub = new Subscription(); - this.partners = []; - this.displayedColumns = ['pos', 'image', 'name', 'address', 'website']; - - this.nameOrderAsc = OrderFilter.Asc; - this.cityOrderAsc = OrderFilter.Asc; - this.websiteOrderAsc = OrderFilter.Asc; - - this.partnersDataSource = new MatTableDataSource(this.partners); - this.partnersLength = 0; - this.partnersPageEvent = new PageEvent(); - this.partnersPageSize = 10; - this.partnersPageIndex = 0; - + this.partnerType = this.route.snapshot.data['dataType']; this.headline = ""; - this.partnerNameOne = ""; + this.partnerColumnHeadline = ""; } ngOnInit() { - this.dataType = this.route.snapshot.data['dataType']; - // this.translateService.use(this.translateService.getDefaultLang()); - this.translateService.get('basic.' + this.dataType).subscribe((translation: string) => { + this.translateService.get('basic.' + this.partnerType).subscribe((translation: string) => { this.headline = translation; }); - this.translateService.get('basic.' + this.dataType + 'One').subscribe((translation: string) => { - this.partnerNameOne = translation; - }); - this.getPartnersData(); } ngAfterViewInit() { - this.partnersDataSource.sort = this.partnersSort; - this.partnersDataSource.paginator = this.partnersPaginator; - } - - getPartnersData() { - this.partnersSub = this.partnerService.partnersGetCollection( - this.partnersPageIndex + 1, - this.partnersPageSize, - this.dataType, - undefined, - undefined, - this.nameOrderAsc, - this.cityOrderAsc, - this.websiteOrderAsc - ).subscribe( - data => { - this.partners = data["hydra:member"]; - this.partnersDataSource = new MatTableDataSource(this.partners); - this.partnersLength = Number(data["hydra:totalItems"]); - this.partnersPaginator.length = this.partnersLength; - } - ); - // switch over this.dataType (customers, etc.) } - /** Announce the change in sort state for assistive technology. */ - onSortChange(sortState: Sort) { - // Reset page index to first page - this.partnersPageIndex = 0; - - let order: OrderFilter; - if (sortState.direction === "") { - order = OrderFilter.Undefined; - } else { - order = sortState.direction; - } - - this.nameOrderAsc = OrderFilter.Undefined; - this.cityOrderAsc = OrderFilter.Undefined; - this.websiteOrderAsc = OrderFilter.Undefined; - switch (sortState.active) { - case "name": - this.nameOrderAsc = order; - break; - case "address": - this.cityOrderAsc = order; - break; - case "website": - this.websiteOrderAsc = order; - break; - } - this.getPartnersData(); - } - - handlePageEvent(e: PageEvent) { - this.partnersPageEvent = e; - this.partnersLength = e.length; - this.partnersPageIndex = e.pageIndex.valueOf(); - this.partnersPageSize = e.pageSize.valueOf(); - this.getPartnersData(); - } - - navigateToPartnerDetails(element: any) { - const partner: PartnerJsonld = element as PartnerJsonld; - this.router.navigate(['/' + partner.partnerType, this.appHelperService.extractId(partner.id)]); - } - - openModalNewPartner() { - const modalRefContact = this.modalService.open(NewPartnerComponent, this.appHelperService.getModalOptions()); - let partner: PartnerJsonld = {} as PartnerJsonld; - partner.partnerType = this.dataType as TypeEnum; - modalRefContact.componentInstance.partner = partner; - modalRefContact.componentInstance.submit.subscribe((modalStatus: ModalStatus) => { - if (modalStatus === ModalStatus.Submitted) { - modalRefContact.dismiss(); - this.getPartnersData(); - } - }); - } } diff --git a/matsen-tool/src/app/_views/posts/post-list/post-list.component.ts b/matsen-tool/src/app/_views/posts/post-list/post-list.component.ts index 8978c7f..700016c 100644 --- a/matsen-tool/src/app/_views/posts/post-list/post-list.component.ts +++ b/matsen-tool/src/app/_views/posts/post-list/post-list.component.ts @@ -59,7 +59,7 @@ export class PostListComponent implements OnInit, AfterViewInit { } ngAfterViewInit() { - this.pagingComponent.initData(); + this.pagingComponent.getData(); } getData = () => { diff --git a/matsen-tool/src/app/_views/sales/sales-detail/sales-detail.component.ts b/matsen-tool/src/app/_views/sales/sales-detail/sales-detail.component.ts index 91c7e1e..0464430 100644 --- a/matsen-tool/src/app/_views/sales/sales-detail/sales-detail.component.ts +++ b/matsen-tool/src/app/_views/sales/sales-detail/sales-detail.component.ts @@ -72,7 +72,7 @@ export class SalesDetailComponent implements OnInit, AfterViewInit { ).subscribe( data => { this.sale = data; - this.pagingComponent.initData(); + this.pagingComponent.getData(); } ); } diff --git a/matsen-tool/src/app/_views/tasks/task-list/task-list.component.ts b/matsen-tool/src/app/_views/tasks/task-list/task-list.component.ts index ffd229d..756ea6e 100644 --- a/matsen-tool/src/app/_views/tasks/task-list/task-list.component.ts +++ b/matsen-tool/src/app/_views/tasks/task-list/task-list.component.ts @@ -43,7 +43,7 @@ export class TaskListComponent implements OnInit, AfterViewInit { } ngAfterViewInit(): void { - this.pagingComponent.initData(); + this.pagingComponent.getData(); } getData = () => {