diff --git a/matsen-tool/src/app/_components/list/list.component.html b/matsen-tool/src/app/_components/list/list.component.html
index 83b9d82..73dc2d2 100644
--- a/matsen-tool/src/app/_components/list/list.component.html
+++ b/matsen-tool/src/app/_components/list/list.component.html
@@ -25,48 +25,65 @@
-
+
+
+
+
+
+
+ {{ getElementValue(element, column) | currency: 'EUR' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getElementValue(element, column) | date:'dd.MM.YYYY - HH:mm':'GMT+0000' }} Uhr
+
+
+
+ {{ getElementValue(element, column) }}
+
+
-
-
- {{ pagingComponent.getPageSize() * (pagingComponent.getPageIndex() - 1) + dataSource.filteredData.indexOf(element) + 1 }}
-
-
+
-
+
+
+ {{ pagingComponent.getPageSize() * (pagingComponent.getPageIndex() - 1) + dataSource.filteredData.indexOf(element) + 1 }}
+
+
{{ getElementValue(element, column) }}
-
+
{{ getElementValue(element, column) }}
-
-
-
-
+
{{ getElementValue(element, column) }}
-
-
-
-
-
-
-
-
-
+
|
diff --git a/matsen-tool/src/app/_components/list/list.component.ts b/matsen-tool/src/app/_components/list/list.component.ts
index 603f17f..7bd335f 100644
--- a/matsen-tool/src/app/_components/list/list.component.ts
+++ b/matsen-tool/src/app/_components/list/list.component.ts
@@ -33,35 +33,44 @@ export class ListComponent implements OnInit, AfterViewInit {
public static COLUMN_TYPE_BTN_DOWNLOAD: string = 'btn_download';
public static COLUMN_TYPE_BTN_EDIT: string = 'btn_edit';
public static COLUMN_TYPE_BTN_REMOVE: string = 'btn_remove';
+ public static COLUMN_TYPE_CURRENCY: string = 'euro';
+ public static COLUMN_TYPE_DATE: string = 'date';
public static COLUMN_TYPE_DETAIL: string = 'detail';
+ public static COLUMN_TYPE_EMAIL: string = 'email';
public static COLUMN_TYPE_IMAGE: string = 'image';
public static COLUMN_TYPE_POSITION: string = 'position';
public static COLUMN_TYPE_TEXT: string = 'text';
public static COLUMN_TYPE_TEXT_LINKED: string = 'text_linked';
- public static COLUMN_TYPE_TEXT_WEBSITE: string = 'website';
+ public static COLUMN_TYPE_WEBSITE: string = 'website';
public static validColumnTypes: string[] = [
ListComponent.COLUMN_TYPE_ADDRESS,
ListComponent.COLUMN_TYPE_BTN_DOWNLOAD,
ListComponent.COLUMN_TYPE_BTN_EDIT,
ListComponent.COLUMN_TYPE_BTN_REMOVE,
+ ListComponent.COLUMN_TYPE_CURRENCY,
+ ListComponent.COLUMN_TYPE_DATE,
ListComponent.COLUMN_TYPE_DETAIL,
+ ListComponent.COLUMN_TYPE_EMAIL,
ListComponent.COLUMN_TYPE_IMAGE,
ListComponent.COLUMN_TYPE_POSITION,
ListComponent.COLUMN_TYPE_TEXT,
ListComponent.COLUMN_TYPE_TEXT_LINKED,
- ListComponent.COLUMN_TYPE_TEXT_WEBSITE,
+ ListComponent.COLUMN_TYPE_WEBSITE,
];
get COLUMN_TYPE_ADDRESS(): string { return ListComponent.COLUMN_TYPE_ADDRESS; }
get COLUMN_TYPE_BTN_DOWNLOAD(): string { return ListComponent.COLUMN_TYPE_BTN_DOWNLOAD; }
get COLUMN_TYPE_BTN_EDIT(): string { return ListComponent.COLUMN_TYPE_BTN_EDIT; }
get COLUMN_TYPE_BTN_REMOVE(): string { return ListComponent.COLUMN_TYPE_BTN_REMOVE; }
+ get COLUMN_TYPE_CURRENCY(): string { return ListComponent.COLUMN_TYPE_CURRENCY; }
+ get COLUMN_TYPE_DATE(): string { return ListComponent.COLUMN_TYPE_DATE; }
get COLUMN_TYPE_DETAIL(): string { return ListComponent.COLUMN_TYPE_DETAIL; }
+ get COLUMN_TYPE_EMAIL(): string { return ListComponent.COLUMN_TYPE_EMAIL; }
get COLUMN_TYPE_POSITION(): string { return ListComponent.COLUMN_TYPE_POSITION; }
get COLUMN_TYPE_IMAGE(): string { return ListComponent.COLUMN_TYPE_IMAGE; }
get COLUMN_TYPE_TEXT(): string { return ListComponent.COLUMN_TYPE_TEXT; }
get COLUMN_TYPE_TEXT_LINKED(): string { return ListComponent.COLUMN_TYPE_TEXT_LINKED; }
- get COLUMN_TYPE_TEXT_WEBSITE(): string { return ListComponent.COLUMN_TYPE_TEXT_WEBSITE; }
+ get COLUMN_TYPE_WEBSITE(): string { return ListComponent.COLUMN_TYPE_WEBSITE; }
protected displayedColumns!: string[];
protected selectedRowIndex: number | null = null;
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 2b044f6..e56b9e0 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
@@ -107,7 +107,7 @@ export class PartnerListComponent implements OnInit, AfterViewInit {
{
name: 'website',
text: 'overview.website',
- type: ListComponent.COLUMN_TYPE_TEXT_WEBSITE,
+ type: ListComponent.COLUMN_TYPE_WEBSITE,
field: 'website',
sortable: true,
subResource: withSubResource ? 'partner' : undefined
diff --git a/matsen-tool/src/app/_views/products/product-list/product-list.component.ts b/matsen-tool/src/app/_views/products/product-list/product-list.component.ts
index 39f6080..7b9a49d 100644
--- a/matsen-tool/src/app/_views/products/product-list/product-list.component.ts
+++ b/matsen-tool/src/app/_views/products/product-list/product-list.component.ts
@@ -19,7 +19,6 @@ import {AssignProductComponent} from "@app/_views/products/assign-product/assign
import {TranslateService} from "@ngx-translate/core";
import {ListColDefinition} from "@app/_components/list/list-col-definition";
import {ListComponent} from "@app/_components/list/list.component";
-import {ROUTE_PRODUCT} from "@app/app-routing.module";
type GeneralDataSource = MatTableDataSource;
@Component({
@@ -88,7 +87,6 @@ export class ProductListComponent implements OnInit, AfterViewInit {
field: 'name',
sortable: true,
subResource: withSubResource ? 'product' : undefined,
- linkResource: 'product'
} as ListColDefinition,
];
if (withSubResource) {
diff --git a/matsen-tool/src/app/_views/sales/sale-list/sale-list.component.html b/matsen-tool/src/app/_views/sales/sale-list/sale-list.component.html
index 4943b16..699521b 100644
--- a/matsen-tool/src/app/_views/sales/sale-list/sale-list.component.html
+++ b/matsen-tool/src/app/_views/sales/sale-list/sale-list.component.html
@@ -2,96 +2,11 @@
-
-
-
-
-
- |
- {{ 'overview.details' | translate }}
- |
-
-
- |
-
-
-
-
- {{ 'overview.number' | translate }}
- |
- {{ pagingComponent.getPageSize() * (pagingComponent.getPageIndex()-1) + dataSource.filteredData.indexOf(element) + 1 }}
- |
-
-
-
-
- {{ 'overview.sale-user' | translate }}
- |
-
- {{ element.owner.fullName }}
- |
-
-
-
-
- {{ 'overview.sale-partner' | translate }}
- |
-
- {{ element.partner.name }}
- |
-
-
-
-
- {{ 'overview.productname' | translate }}
- |
-
- {{ element.product.name }}
- |
-
-
-
-
- {{ 'overview.turnover' | translate }}
- |
-
- {{ element.turnover | currency: 'EUR' }}
- |
-
-
-
-
- {{ 'overview.profit' | translate }}
- |
-
- {{ element.profit | currency: 'EUR' }}
- |
-
-
-
-
- {{ 'overview.createdAt' | translate }}
- |
-
- {{ element.createdAt | date:'dd.MM.YYYY - HH:mm':'GMT+0000' }} Uhr
- |
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/matsen-tool/src/app/_views/sales/sale-list/sale-list.component.ts b/matsen-tool/src/app/_views/sales/sale-list/sale-list.component.ts
index d1bcb0f..aa5b498 100644
--- a/matsen-tool/src/app/_views/sales/sale-list/sale-list.component.ts
+++ b/matsen-tool/src/app/_views/sales/sale-list/sale-list.component.ts
@@ -10,6 +10,8 @@ import {PagingComponent} from "@app/_components/paging/paging.component";
import {NewSaleComponent} from "@app/_views/sales/new-sale/new-sale.component";
import {OrderFilter} from "@app/_models/orderFilter";
import {AccountService} from "@app/_services";
+import {ListComponent} from "@app/_components/list/list.component";
+import {ListColDefinition} from "@app/_components/list/list-col-definition";
@Component({
selector: 'app-sale-list',
@@ -21,16 +23,14 @@ export class SaleListComponent implements OnInit, AfterViewInit {
@Input() public user!: UserJsonld;
@Input() public product!: ProductJsonld;
@Input() public partner!: PartnerJsonld;
- @ViewChild(MatSort) sort;
- @ViewChild("pagingComponent", { static: false }) pagingComponent!: PagingComponent;
+ @ViewChild("listComponent", { static: false }) listComponent!: ListComponent;
- protected displayedColumns: string[];
protected salesSub: Subscription;
protected sales: Array;
protected salesSummarySub: Subscription;
protected saleSummaries: Array;
-
protected dataSource;
+ protected listColDefinitions!: ListColDefinition[];
constructor(
private saleService: SaleService,
@@ -38,27 +38,71 @@ export class SaleListComponent implements OnInit, AfterViewInit {
protected appHelperService: AppHelperService,
protected accountService: AccountService,
) {
- this.sort = new MatSort();
- this.displayedColumns = ['details', 'pos', 'user', 'partner', 'product', 'turnover', 'profit', 'date'];
this.salesSub = new Subscription();
this.sales = [];
this.salesSummarySub = new Subscription();
this.saleSummaries = [];
-
this.dataSource = new MatTableDataSource(this.sales);
+ this.listColDefinitions = [
+ {
+ name: 'user',
+ text: 'overview.sale-user',
+ type: ListComponent.COLUMN_TYPE_TEXT_LINKED,
+ field: 'fullName',
+ sortable: true,
+ subResource: 'owner',
+ } as ListColDefinition,
+ {
+ name: 'partner',
+ text: 'overview.sale-partner',
+ type: ListComponent.COLUMN_TYPE_TEXT_LINKED,
+ field: 'name',
+ sortable: true,
+ subResource: 'partner',
+ } as ListColDefinition,
+ {
+ name: 'product',
+ text: 'overview.productname',
+ type: ListComponent.COLUMN_TYPE_TEXT_LINKED,
+ field: 'name',
+ sortable: true,
+ subResource: 'product',
+ } as ListColDefinition,
+ {
+ name: 'turnover',
+ text: 'overview.turnover',
+ type: ListComponent.COLUMN_TYPE_CURRENCY,
+ field: 'turnover',
+ sortable: true
+ } as ListColDefinition,
+ {
+ name: 'profit',
+ text: 'overview.profit',
+ type: ListComponent.COLUMN_TYPE_CURRENCY,
+ field: 'profit',
+ sortable: true
+ } as ListColDefinition,
+ {
+ name: 'createdAt',
+ text: 'overview.createdAt',
+ type: ListComponent.COLUMN_TYPE_DATE,
+ field: 'createdAt',
+ sortable: true
+ } as ListColDefinition,
+ ];
}
ngOnInit() {
}
ngAfterViewInit(): void {
- this.pagingComponent.getData();
+ this.listComponent.getData();
}
getData = () => {
this.salesSub = this.saleService.salesGetCollection(
- this.pagingComponent.getPageIndex(),
- this.pagingComponent.getPageSize(),
+ this.listComponent.getPageIndex(),
+ this.listComponent.getPageSize(),
this.user !== undefined ? this.user.id : undefined,
undefined,
this.partner !== undefined ? this.partner.id : undefined,
@@ -68,15 +112,13 @@ export class SaleListComponent implements OnInit, AfterViewInit {
data => {
this.sales = data["hydra:member"];
this.dataSource = new MatTableDataSource(this.sales);
- this.pagingComponent.setDataLength(Number(data["hydra:totalItems"]));
+ this.listComponent.setData(this.dataSource, Number(data["hydra:totalItems"]));
}
)
}
- onSortChange(sortState: Sort) {
+ onSortChange = (sortState: Sort)=> {
// Reset page index to first page
- this.pagingComponent.resetPageIndex();
-
let order: OrderFilter;
if (sortState.direction === "") {
order = OrderFilter.Undefined;
@@ -84,10 +126,11 @@ export class SaleListComponent implements OnInit, AfterViewInit {
order = sortState.direction;
}
- this.pagingComponent.getData();
+ this.listComponent.getData();
}
- navigateToSaleDetails(element: any) {
+ navigateToSaleDetails = (element: any) => {
+ console.log(element);
const sale: SaleJsonld = element as SaleJsonld;
this.router.navigate(['/sale', this.appHelperService.extractId(sale.id)]);
}
diff --git a/matsen-tool/src/app/_views/user/user-list/user-list.component.html b/matsen-tool/src/app/_views/user/user-list/user-list.component.html
index a246f05..b0e370b 100644
--- a/matsen-tool/src/app/_views/user/user-list/user-list.component.html
+++ b/matsen-tool/src/app/_views/user/user-list/user-list.component.html
@@ -1,71 +1,9 @@
-
-
-
-
-
- |
- {{ 'overview.details' | translate }}
- |
-
-
- |
-
-
-
-
- {{ 'overview.number' | translate }}
- |
- {{ pagingComponent.getPageSize() * (pagingComponent.getPageIndex()-1) + dataSource.filteredData.indexOf(element) + 1 }}
- |
-
-
-
-
- {{ 'overview.image' | translate }}
- |
-
-
- |
-
-
-
-
- {{ 'overview.firstName' | translate }}
- |
-
- {{ element.firstName }}
- |
-
-
-
-
- {{ 'overview.lastName' | translate }}
- |
-
- {{ element.lastName }}
- |
-
-
-
-
- {{ 'overview.email' | translate }}
- |
-
- {{ element.email }}
- |
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/matsen-tool/src/app/_views/user/user-list/user-list.component.ts b/matsen-tool/src/app/_views/user/user-list/user-list.component.ts
index 1721def..998bd86 100644
--- a/matsen-tool/src/app/_views/user/user-list/user-list.component.ts
+++ b/matsen-tool/src/app/_views/user/user-list/user-list.component.ts
@@ -7,6 +7,9 @@ import {MatTableDataSource} from "@angular/material/table";
import {OrderFilter} from "@app/_models/orderFilter";
import {Router} from "@angular/router";
import {AppHelperService} from "@app/_helpers/app-helper.service";
+import {ListComponent} from "@app/_components/list/list.component";
+import {ListColDefinition} from "@app/_components/list/list-col-definition";
+import {ListColTypeAddress} from "@app/_components/list/list-col-type-address";
@Component({
selector: 'app-user-list',
@@ -15,28 +18,50 @@ import {AppHelperService} from "@app/_helpers/app-helper.service";
})
export class UserListComponent implements OnInit, AfterViewInit {
- @ViewChild(MatSort) sort;
- @ViewChild("pagingComponent", { static: false }) pagingComponent!: PagingComponent;
-
+ @ViewChild("listComponent", { static: false }) listComponent!: ListComponent;
protected usersSub: Subscription;
protected users: Array;
protected dataSource;
- protected displayedColumns!: string[];
-
+ protected listColDefinitions!: ListColDefinition[];
constructor(
private userService: UserService,
private router: Router,
protected appHelperService: AppHelperService,
) {
- this.displayedColumns = ['details', 'pos', 'image', 'firstName', 'lastName', 'email'];
- this.sort = new MatSort();
-
- this.sort = new MatSort();
this.usersSub = new Subscription();
this.users = [];
this.dataSource = new MatTableDataSource(this.users);
+ this.listColDefinitions = [
+ {
+ name: 'image',
+ text: 'overview.image',
+ type: ListComponent.COLUMN_TYPE_IMAGE,
+ field: 'imageUrl',
+ } as ListColDefinition,
+ {
+ name: 'firstName',
+ text: 'overview.firstName',
+ type: ListComponent.COLUMN_TYPE_TEXT,
+ field: 'firstName',
+ sortable: true,
+ } as ListColDefinition,
+ {
+ name: 'lastName',
+ text: 'overview.lastName',
+ type: ListComponent.COLUMN_TYPE_TEXT,
+ field: 'lastName',
+ sortable: true,
+ } as ListColDefinition,
+ {
+ name: 'email',
+ text: 'overview.email',
+ type: ListComponent.COLUMN_TYPE_EMAIL,
+ field: 'email',
+ sortable: false,
+ } as ListColDefinition,
+ ];
}
ngOnInit() {
@@ -44,15 +69,13 @@ export class UserListComponent implements OnInit, AfterViewInit {
}
ngAfterViewInit() {
- this.dataSource.sort = this.sort;
- this.dataSource.paginator = this.pagingComponent.paginator;
- this.pagingComponent.getData();
+ this.listComponent.getData();
}
getData = (term? : string): void => {
this.usersSub = this.userService.usersGetCollection(
- this.pagingComponent.getPageIndex(),
- this.pagingComponent.getPageSize(),
+ this.listComponent.getPageIndex(),
+ this.listComponent.getPageSize(),
undefined,
undefined,
term
@@ -60,24 +83,22 @@ export class UserListComponent implements OnInit, AfterViewInit {
data => {
this.users = data["hydra:member"];
this.dataSource = new MatTableDataSource(this.users);
- this.pagingComponent.setDataLength(Number(data["hydra:totalItems"]));
+ this.listComponent.setData(this.dataSource, Number(data["hydra:totalItems"]));
}
);
}
onSortChange = (sortState: Sort) => {
- this.pagingComponent.resetPageIndex()
-
let order: OrderFilter;
if (sortState.direction === "") {
order = OrderFilter.Undefined;
} else {
order = sortState.direction;
}
- this.pagingComponent.getData();
+ this.listComponent.getData();
}
- navigateToUserDetails(element: any) {
+ navigateToUserDetails = (element: any) => {
const user: UserJsonld = element as UserJsonld;
this.router.navigate(['/user', this.appHelperService.extractId(user.id)]);
}