Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

126 wiersze
4.2 KiB

  1. import {AfterViewInit, ChangeDetectorRef, Component, OnInit, ViewChild} from '@angular/core';
  2. import {MatSort, MatSortModule, Sort} from "@angular/material/sort";
  3. import {MatPaginator, MatPaginatorIntl, MatPaginatorModule, PageEvent} from "@angular/material/paginator";
  4. import {MatTableDataSource, MatTableModule} from "@angular/material/table";
  5. import {PartnerJsonld} from "@app/core/api/v1";
  6. import {OrderFilter} from "@app/_models/orderFilter";
  7. import {ApiConverter} from "@app/_helpers/api.converter";
  8. import {Router, RouterLink, RouterLinkActive} from "@angular/router";
  9. import {NgIf} from "@angular/common";
  10. import {Subscription} from "rxjs";
  11. @Component({
  12. selector: 'app-products',
  13. templateUrl: './products.component.html',
  14. styleUrl: './products.component.scss',
  15. standalone: true,
  16. imports: [MatTableModule, MatSortModule, MatPaginatorModule, RouterLink, RouterLinkActive, NgIf],
  17. })
  18. export class ProductsComponent implements OnInit, AfterViewInit {
  19. @ViewChild(MatSort) sort;
  20. @ViewChild(MatPaginator) paginator: MatPaginator;
  21. protected productsSub: Subscription;
  22. protected products: Array<PartnerJsonld>; //TODO: ProductJsonld
  23. protected dataType!: string;
  24. protected dataSource;
  25. protected displayedColumns: string[];
  26. protected length: number;
  27. protected pageEvent: PageEvent;
  28. protected pageSize: number;
  29. protected pageIndex: number;
  30. constructor(
  31. private router: Router
  32. ) {
  33. this.sort = new MatSort();
  34. this.paginator = new MatPaginator(new MatPaginatorIntl(), ChangeDetectorRef.prototype);
  35. this.dataSource = new MatTableDataSource; //<ProductJsonld>(this.products)
  36. this.displayedColumns = ['pos', 'name', 'storage', 'number'];
  37. this.productsSub = new Subscription();
  38. this.products = [];
  39. this.length = 0;
  40. this.pageEvent = new PageEvent();
  41. this.pageSize = 10;
  42. this.pageIndex = 0;
  43. }
  44. ngOnInit() {
  45. this.getData();
  46. }
  47. ngAfterViewInit() {
  48. this.dataSource.sort = this.sort;
  49. this.dataSource.paginator = this.paginator;
  50. }
  51. getData() {
  52. // this.productsSub = this.productService.productsGetCollection(
  53. // this.pageIndex + 1,
  54. // this.pageSize,
  55. // this.dataType,
  56. // undefined,
  57. // this.nameOrderAsc,
  58. // this.storageOrderAsc,
  59. // this.numberOrderAsc
  60. // ).subscribe(
  61. // data => {
  62. // this.products = data["hydra:member"];
  63. // this.dataSource = new MatTableDataSource<ProductJsonld>(this.products);
  64. // console.log(data);
  65. // this.length = Number(data["hydra:totalItems"]);
  66. // this.paginator.length = this.length;
  67. // }
  68. // );
  69. }
  70. /** Announce the change in sort state for assistive technology. */
  71. onSortChange(sortState: Sort) {
  72. // Reset page index to first page
  73. this.pageIndex = 0;
  74. let order: OrderFilter;
  75. if (sortState.direction === "") {
  76. order = OrderFilter.Undefined;
  77. } else {
  78. order = sortState.direction;
  79. }
  80. // this.nameOrderAsc = OrderFilter.Undefined;
  81. // this.cityOrderAsc = OrderFilter.Undefined;
  82. // this.websiteOrderAsc = OrderFilter.Undefined;
  83. // switch (sortState.active) {
  84. // case "name":
  85. // this.nameOrderAsc = order;
  86. // break;
  87. // case "address":
  88. // this.cityOrderAsc = order;
  89. // break;
  90. // case "website":
  91. // this.websiteOrderAsc = order;
  92. // break;
  93. // }
  94. this.getData();
  95. }
  96. handlePageEvent(e: PageEvent) {
  97. this.pageEvent = e;
  98. this.length = e.length;
  99. this.pageIndex = e.pageIndex.valueOf();
  100. this.pageSize = e.pageSize.valueOf();
  101. this.getData();
  102. }
  103. navigateToProductDetails(element: any) {
  104. const product: PartnerJsonld = element as PartnerJsonld; //Todo: ProductJsonld
  105. console.log(product.type);
  106. console.log(ApiConverter.extractId(product.id));
  107. // this.router.navigate(['/products', ApiConverter.extractId(product.id)]);
  108. this.router.navigate(['/products', '1']);
  109. }
  110. }