diff --git a/matsen-tool/src/app/app-routing.module.ts b/matsen-tool/src/app/app-routing.module.ts
index 9dbbfc7..6887fa8 100644
--- a/matsen-tool/src/app/app-routing.module.ts
+++ b/matsen-tool/src/app/app-routing.module.ts
@@ -61,10 +61,17 @@ const routes: Routes = [
canActivate: [AuthGuard],
children: [
{path: '', component: ProductsComponent, data: {dataType: 'product'}},
- {path: 'detail', component: ProductsDetailComponent, data: {dataType: 'product-detail'}},
+ {path: ':id', component: ProductsDetailComponent, data: {dataType: 'product-detail'}},
+ ]
+ },
+ {
+ path: 'documents',
+ component: TwoColumnComponent,
+ canActivate: [AuthGuard],
+ children: [
+ {path: '', component: DocumentsComponent, data: {dataType: 'document'}},
]
},
- {path: 'documents', component: DocumentsComponent, canActivate: [AuthGuard]},
// otherwise redirect to home
{path: '**', redirectTo: ''}
diff --git a/matsen-tool/src/app/app.module.ts b/matsen-tool/src/app/app.module.ts
index 7476173..8fb0adc 100644
--- a/matsen-tool/src/app/app.module.ts
+++ b/matsen-tool/src/app/app.module.ts
@@ -28,6 +28,8 @@ import {ContactsDetailComponent} from './contacts/contacts-detail/contacts-detai
import {ModalComponent} from './_components/modal/modal.component';
import {PropertyInterceptor} from "@app/_helpers/property.interceptor";
import {MatPaginatorModule} from "@angular/material/paginator";
+import {MatSortModule} from "@angular/material/sort";
+import {MatTableModule} from "@angular/material/table";
export function apiConfigFactory(): Configuration {
const params: ConfigurationParameters = {
@@ -62,16 +64,18 @@ export function HttpLoaderFactory(http: HttpClient) {
MatCardModule,
NgOptimizedImage,
PartnersComponent,
- MatPaginatorModule
+ ProductsComponent,
+ DocumentsComponent,
+ MatPaginatorModule,
+ MatSortModule,
+ MatTableModule
],
declarations: [
AppComponent,
AlertComponent,
HomeComponent,
TwoColumnComponent,
- ProductsComponent,
ProductsDetailComponent,
- DocumentsComponent,
ModalComponent,
PartnersDetailComponent,
NewContactComponent,
diff --git a/matsen-tool/src/app/documents/documents.component.html b/matsen-tool/src/app/documents/documents.component.html
index 25f3231..cec23c7 100644
--- a/matsen-tool/src/app/documents/documents.component.html
+++ b/matsen-tool/src/app/documents/documents.component.html
@@ -1 +1,47 @@
-
documents works!
+
+
+
+ |
+ Nr.
+ |
+ {{ (pageSize * pageIndex) + dataSource.filteredData.indexOf(element) + 1 }}
+ |
+
+
+
+
+ Dokument
+ |
+ {{ element.name }} |
+
+
+
+
+ Typ
+ |
+ {{ element.storage }}
+ |
+
+
+
+
+ Hochgeladen am
+ |
+ {{ element.website }}
+ |
+
+
+
+
+
+
+
+
diff --git a/matsen-tool/src/app/documents/documents.component.ts b/matsen-tool/src/app/documents/documents.component.ts
index d3197e8..0948c55 100644
--- a/matsen-tool/src/app/documents/documents.component.ts
+++ b/matsen-tool/src/app/documents/documents.component.ts
@@ -1,10 +1,124 @@
-import { Component } from '@angular/core';
+import {ChangeDetectorRef, Component, ViewChild} from '@angular/core';
+import {MatSort, MatSortModule, Sort} from "@angular/material/sort";
+import {MatPaginator, MatPaginatorIntl, MatPaginatorModule, PageEvent} from "@angular/material/paginator";
+import {Subscription} from "rxjs";
+import {PartnerJsonld} from "@app/core/api/v1";
+import {Router, RouterLink, RouterLinkActive} from "@angular/router";
+import {MatTableDataSource, MatTableModule} from "@angular/material/table";
+import {OrderFilter} from "@app/_models/orderFilter";
+import {ApiConverter} from "@app/_helpers/api.converter";
+import {NgIf} from "@angular/common";
@Component({
- selector: 'app-documents',
- templateUrl: './documents.component.html',
- styleUrl: './documents.component.scss'
+ selector: 'app-documents',
+ templateUrl: './documents.component.html',
+ styleUrl: './documents.component.scss',
+ standalone: true,
+ imports: [MatTableModule, MatSortModule, MatPaginatorModule, RouterLink, RouterLinkActive, NgIf],
})
export class DocumentsComponent {
+ @ViewChild(MatSort) sort;
+ @ViewChild(MatPaginator) paginator: MatPaginator;
+ protected documentsSub: Subscription;
+ protected documents: Array;
+ protected dataType!: string;
+
+ protected dataSource;
+ protected displayedColumns: string[];
+
+ protected length: number;
+ protected pageEvent: PageEvent;
+ protected pageSize: number;
+ protected pageIndex: number;
+
+ constructor(
+ private router: Router
+ ) {
+ this.sort = new MatSort();
+ this.paginator = new MatPaginator(new MatPaginatorIntl(), ChangeDetectorRef.prototype);
+ this.dataSource = new MatTableDataSource; //(this.documents)
+ this.displayedColumns = ['pos', 'name', 'type', 'date'];
+
+ this.documentsSub = new Subscription();
+ this.documents = [];
+
+ this.length = 0;
+ this.pageEvent = new PageEvent();
+ this.pageSize = 10;
+ this.pageIndex = 0;
+ }
+
+ ngOnInit() {
+ this.getData();
+ }
+
+ ngAfterViewInit() {
+ this.dataSource.sort = this.sort;
+ this.dataSource.paginator = this.paginator;
+ }
+
+ getData() {
+ // this.documentsSub = this.documentService.documentsGetCollection(
+ // this.pageIndex + 1,
+ // this.pageSize,
+ // this.dataType,
+ // undefined,
+ // this.nameOrderAsc,
+ // this.storageOrderAsc,
+ // this.numberOrderAsc
+ // ).subscribe(
+ // data => {
+ // this.documents = data["hydra:member"];
+ // this.dataSource = new MatTableDataSource(this.documents);
+ // console.log(data);
+ // this.length = Number(data["hydra:totalItems"]);
+ // this.paginator.length = this.length;
+ // }
+ // );
+ }
+
+ /** Announce the change in sort state for assistive technology. */
+ onSortChange(sortState: Sort) {
+ // Reset page index to first page
+ this.pageIndex = 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.getData();
+ }
+
+ handlePageEvent(e: PageEvent) {
+ this.pageEvent = e;
+ this.length = e.length;
+ this.pageIndex = e.pageIndex.valueOf();
+ this.pageSize = e.pageSize.valueOf();
+ this.getData();
+ }
+
+ navigateToDocumentFile(element: any) {
+ // const partner: PartnerJsonld = element as PartnerJsonld;
+ // console.log(partner.type);
+ // console.log(ApiConverter.extractId(partner.id));
+ // this.router.navigate(['/documents', ApiConverter.extractId(partner.id)]);
+ }
}
diff --git a/matsen-tool/src/app/partners/partners.component.ts b/matsen-tool/src/app/partners/partners.component.ts
index 75d76b0..5a9c6e1 100644
--- a/matsen-tool/src/app/partners/partners.component.ts
+++ b/matsen-tool/src/app/partners/partners.component.ts
@@ -69,6 +69,27 @@ export class PartnersComponent implements OnInit, AfterViewInit {
this.dataSource.paginator = this.paginator;
}
+ getData() {
+ this.partnersSub = this.partnerService.partnersGetCollection(
+ this.pageIndex + 1,
+ this.pageSize,
+ this.dataType,
+ undefined,
+ this.nameOrderAsc,
+ this.cityOrderAsc,
+ this.websiteOrderAsc
+ ).subscribe(
+ data => {
+ this.partners = data["hydra:member"];
+ this.dataSource = new MatTableDataSource(this.partners);
+ console.log(data);
+ this.length = Number(data["hydra:totalItems"]);
+ this.paginator.length = this.length;
+ }
+ );
+ // switch over this.dataType (customers, etc.)
+ }
+
/** Announce the change in sort state for assistive technology. */
onSortChange(sortState: Sort) {
// Reset page index to first page
@@ -98,27 +119,6 @@ export class PartnersComponent implements OnInit, AfterViewInit {
this.getData();
}
- getData() {
- this.partnersSub = this.partnerService.partnersGetCollection(
- this.pageIndex + 1,
- this.pageSize,
- this.dataType,
- undefined,
- this.nameOrderAsc,
- this.cityOrderAsc,
- this.websiteOrderAsc
- ).subscribe(
- data => {
- this.partners = data["hydra:member"];
- this.dataSource = new MatTableDataSource(this.partners);
- console.log(data);
- this.length = Number(data["hydra:totalItems"]);
- this.paginator.length = this.length;
- }
- );
- // switch over this.dataType (customers, etc.)
- }
-
handlePageEvent(e: PageEvent) {
this.pageEvent = e;
this.length = e.length;
diff --git a/matsen-tool/src/app/products/products-detail/products-detail.component.html b/matsen-tool/src/app/products/products-detail/products-detail.component.html
index 86d927f..42abaa2 100644
--- a/matsen-tool/src/app/products/products-detail/products-detail.component.html
+++ b/matsen-tool/src/app/products/products-detail/products-detail.component.html
@@ -1 +1,23 @@
-products-detail works!
+
+
+
+
Azelainsäure
+
+ - Lagerbestand:
+ - 376512 KG
+ - Gesperrt:
+ - Nein
+ - Einkaufseinheitencode:
+ - Dose
+ - Verkaufseinkaufseinheitencode:
+ - Dose
+ - Zollposition:
+ - 234856372
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/matsen-tool/src/app/products/products-detail/products-detail.component.ts b/matsen-tool/src/app/products/products-detail/products-detail.component.ts
index 02e6f7c..f40405f 100644
--- a/matsen-tool/src/app/products/products-detail/products-detail.component.ts
+++ b/matsen-tool/src/app/products/products-detail/products-detail.component.ts
@@ -1,10 +1,48 @@
-import { Component } from '@angular/core';
+import {AfterViewInit, Component, OnInit} from '@angular/core';
+import {environment} from "@environments/environment";
+import {ActivatedRoute} from "@angular/router";
+import {Subscription} from "rxjs";
+import {PartnerJsonld, PartnerService} from "@app/core/api/v1";
@Component({
- selector: 'app-products-detail',
- templateUrl: './products-detail.component.html',
- styleUrl: './products-detail.component.scss'
+ selector: 'app-products-detail',
+ templateUrl: './products-detail.component.html',
+ styleUrl: './products-detail.component.scss'
})
-export class ProductsDetailComponent {
+export class ProductsDetailComponent implements OnInit, AfterViewInit {
+ protected readonly environment = environment;
+ protected id: string;
+ protected productDetailSub: Subscription;
+ protected product;//: ProductJsonld;
+
+ constructor(
+ private route: ActivatedRoute,
+ // private productService: ProductService,
+ ) {
+ this.id = "";
+ this.productDetailSub = new Subscription();
+ this.product = {}// as ProductJsonld;
+ }
+
+ ngOnInit() {
+ this.route.params.subscribe(params => {
+ this.id = params['id'];
+ });
+ this.getProductData();
+ }
+
+ ngAfterViewInit() {
+
+ }
+
+ getProductData() {
+ // this.productDetailSub = this.productService.partnersIdGet(
+ // this.id
+ // ).subscribe(
+ // data => {
+ // this.product = data;
+ // }
+ // );
+ }
}
diff --git a/matsen-tool/src/app/products/products.component.html b/matsen-tool/src/app/products/products.component.html
index d786d45..703774d 100644
--- a/matsen-tool/src/app/products/products.component.html
+++ b/matsen-tool/src/app/products/products.component.html
@@ -1 +1,48 @@
-products works!
+
+
+
+ |
+ Nr.
+ |
+ {{ (pageSize * pageIndex) + dataSource.filteredData.indexOf(element) + 1 }}
+ |
+
+
+
+
+ Produktname
+ |
+ {{ element.name }} |
+
+
+
+
+ Lagerbestand
+ |
+ {{ element.storage }}
+ |
+
+
+
+
+ Nummer
+ |
+ {{ element.website }}
+ |
+
+
+
+
+
+
+Go to product detail
+
+
diff --git a/matsen-tool/src/app/products/products.component.ts b/matsen-tool/src/app/products/products.component.ts
index 9e630af..a403c9f 100644
--- a/matsen-tool/src/app/products/products.component.ts
+++ b/matsen-tool/src/app/products/products.component.ts
@@ -1,10 +1,125 @@
-import { Component } from '@angular/core';
+import {AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core';
+import {MatSort, MatSortModule, Sort} from "@angular/material/sort";
+import {MatPaginator, MatPaginatorIntl, MatPaginatorModule, PageEvent} from "@angular/material/paginator";
+import {MatTableDataSource, MatTableModule} from "@angular/material/table";
+import {PartnerJsonld} from "@app/core/api/v1";
+import {OrderFilter} from "@app/_models/orderFilter";
+import {ApiConverter} from "@app/_helpers/api.converter";
+import {Router, RouterLink, RouterLinkActive} from "@angular/router";
+import {NgIf} from "@angular/common";
+import {Subscription} from "rxjs";
@Component({
- selector: 'app-products',
- templateUrl: './products.component.html',
- styleUrl: './products.component.scss'
+ selector: 'app-products',
+ templateUrl: './products.component.html',
+ styleUrl: './products.component.scss',
+ standalone: true,
+ imports: [MatTableModule, MatSortModule, MatPaginatorModule, RouterLink, RouterLinkActive, NgIf],
})
-export class ProductsComponent {
+export class ProductsComponent implements OnInit, AfterViewInit {
+ @ViewChild(MatSort) sort;
+ @ViewChild(MatPaginator) paginator: MatPaginator;
+ protected productsSub: Subscription;
+ protected products: Array; //TODO: ProductJsonld
+ protected dataType!: string;
+
+ protected dataSource;
+ protected displayedColumns: string[];
+
+ protected length: number;
+ protected pageEvent: PageEvent;
+ protected pageSize: number;
+ protected pageIndex: number;
+
+ constructor(
+ private router: Router
+ ) {
+ this.sort = new MatSort();
+ this.paginator = new MatPaginator(new MatPaginatorIntl(), ChangeDetectorRef.prototype);
+ this.dataSource = new MatTableDataSource; //(this.products)
+ this.displayedColumns = ['pos', 'name', 'storage', 'number'];
+
+ this.productsSub = new Subscription();
+ this.products = [];
+
+ this.length = 0;
+ this.pageEvent = new PageEvent();
+ this.pageSize = 10;
+ this.pageIndex = 0;
+ }
+
+ ngOnInit() {
+ this.getData();
+ }
+
+ ngAfterViewInit() {
+ this.dataSource.sort = this.sort;
+ this.dataSource.paginator = this.paginator;
+ }
+
+ getData() {
+ // this.productsSub = this.productService.productsGetCollection(
+ // this.pageIndex + 1,
+ // this.pageSize,
+ // this.dataType,
+ // undefined,
+ // this.nameOrderAsc,
+ // this.storageOrderAsc,
+ // this.numberOrderAsc
+ // ).subscribe(
+ // data => {
+ // this.products = data["hydra:member"];
+ // this.dataSource = new MatTableDataSource(this.products);
+ // console.log(data);
+ // this.length = Number(data["hydra:totalItems"]);
+ // this.paginator.length = this.length;
+ // }
+ // );
+ }
+
+ /** Announce the change in sort state for assistive technology. */
+ onSortChange(sortState: Sort) {
+ // Reset page index to first page
+ this.pageIndex = 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.getData();
+ }
+
+ handlePageEvent(e: PageEvent) {
+ this.pageEvent = e;
+ this.length = e.length;
+ this.pageIndex = e.pageIndex.valueOf();
+ this.pageSize = e.pageSize.valueOf();
+ this.getData();
+ }
+
+ navigateToProductDetails(element: any) {
+ const product: PartnerJsonld = element as PartnerJsonld; //Todo: ProductJsonld
+ console.log(product.type);
+ console.log(ApiConverter.extractId(product.id));
+ // this.router.navigate(['/products', ApiConverter.extractId(product.id)]);
+ this.router.navigate(['/products', '1']);
+ }
}