Kaynağa Gözat

product list partner and contact

master
Daniel 1 yıl önce
ebeveyn
işleme
4488f31e13
9 değiştirilmiş dosya ile 124 ekleme ve 66 silme
  1. +7
    -0
      matsen-tool/src/app/_components/paging/paging.component.ts
  2. +2
    -2
      matsen-tool/src/app/_views/contacts/new-contact/new-contact.component.ts
  3. +1
    -1
      matsen-tool/src/app/_views/documents/new-document/new-document.component.ts
  4. +1
    -1
      matsen-tool/src/app/_views/partners/new-partner/new-partner.component.ts
  5. +8
    -1
      matsen-tool/src/app/_views/posts/post-list/post-list.component.ts
  6. +1
    -1
      matsen-tool/src/app/_views/products/new-product/new-product.component.ts
  7. +13
    -28
      matsen-tool/src/app/_views/products/product-list/product-list.component.html
  8. +85
    -32
      matsen-tool/src/app/_views/products/product-list/product-list.component.ts
  9. +6
    -0
      matsen-tool/src/app/_views/tasks/task-list/task-list.component.html

+ 7
- 0
matsen-tool/src/app/_components/paging/paging.component.ts Dosyayı Görüntüle

@@ -111,4 +111,11 @@ export class PagingComponent implements OnInit, AfterViewInit {
clearForm() {
this.searchForm.get('inputText')!.setValue('');
}

getSearchValue() {
if (this.searchable) {
return this.searchForm.get('inputText')!.value;
}
return undefined;
}
}

+ 2
- 2
matsen-tool/src/app/_views/contacts/new-contact/new-contact.component.ts Dosyayı Görüntüle

@@ -2,7 +2,7 @@ import {AfterViewInit, Component, EventEmitter, Input, OnInit, Output} from '@an
import {FormGroup} from "@angular/forms";
import {contactForm} from "@app/_forms/apiForms";
import {ContactJsonld, ContactService, MediaObjectService} from "@app/core/api/v1";
import {Subscription, window} from "rxjs";
import {firstValueFrom, Subscription, window} from "rxjs";
import {ModalStatus} from "@app/_helpers/modal.states";
import {FormGroupInitializer} from "@app/_helpers/formgroup.initializer";
import {TranslateService} from "@ngx-translate/core";
@@ -117,7 +117,7 @@ export class NewContactComponent implements OnInit, AfterViewInit {
this.translateService.get('system.confirm-delete-image').subscribe((translation: string) => {
confirmMessage = translation;
});
const userConfirmed = (window as any).confirm(confirmMessage);
const userConfirmed = confirm(confirmMessage);
if (userConfirmed) {
this.contactForm.patchValue({"image": null});
this.contactForm.patchValue({"imageUrl": null});


+ 1
- 1
matsen-tool/src/app/_views/documents/new-document/new-document.component.ts Dosyayı Görüntüle

@@ -163,7 +163,7 @@ export class NewDocumentComponent implements OnInit, AfterViewInit {
this.translateService.get('system.confirm-delete-file').subscribe((translation: string) => {
confirmMessage = translation;
});
const userConfirmed = window.confirm(confirmMessage);
const userConfirmed = confirm(confirmMessage);
if (userConfirmed) {
this.documentForm.patchValue({"documentObject": null});
this.documentForm.patchValue({"documentUrl": null});


+ 1
- 1
matsen-tool/src/app/_views/partners/new-partner/new-partner.component.ts Dosyayı Görüntüle

@@ -104,7 +104,7 @@ export class NewPartnerComponent implements OnInit {
this.translateService.get('system.confirm-delete-image').subscribe((translation: string) => {
confirmMessage = translation;
});
const userConfirmed = window.confirm(confirmMessage);
const userConfirmed = confirm(confirmMessage);
if (userConfirmed) {
this.partnerForm.patchValue({"logo": null});
this.partnerForm.patchValue({"logoUrl": null});


+ 8
- 1
matsen-tool/src/app/_views/posts/post-list/post-list.component.ts Dosyayı Görüntüle

@@ -136,7 +136,14 @@ export class PostListComponent implements OnInit, AfterViewInit {

openModalNewPost() {
let post: PostJsonld = {} as PostJsonld;
post.partnerIri = this.partner.id;

if (this.partner !== undefined) {
post.partnerIri = this.partner?.id;
}
if (this.sale !== undefined) {
post.partnerIri = this.sale?.partnerIri;
post.saleIri = this.sale?.id;
}
this.appHelperService.openModal(NewPostComponent, { 'posting': post }, this.getPostsData);
}



+ 1
- 1
matsen-tool/src/app/_views/products/new-product/new-product.component.ts Dosyayı Görüntüle

@@ -94,7 +94,7 @@ export class NewProductComponent implements OnInit {
this.translateService.get('system.confirm-delete-image').subscribe((translation: string) => {
confirmMessage = translation;
});
const userConfirmed = window.confirm(confirmMessage);
const userConfirmed = confirm(confirmMessage);
if (userConfirmed) {
this.productForm.patchValue({"image": null});
this.productForm.patchValue({"imageUrl": null});


+ 13
- 28
matsen-tool/src/app/_views/products/product-list/product-list.component.html Dosyayı Görüntüle

@@ -5,11 +5,11 @@
</div>
<app-paging #pagingComponent
[getDataFunction]="getData"
[dataSource]="dataSource"
[dataSource]="dataSourceProducts"
[searchable]="true"
>
<div class="table-responsive">
<table mat-table [dataSource]="dataSource" matSort (matSortChange)="onSortChange($event)"
<table mat-table [dataSource]="getDataSource()" matSort (matSortChange)="onSortChange($event)"
class="mat-elevation-z8">

<ng-container matColumnDef="details">
@@ -27,7 +27,7 @@
{{ 'overview.number' | translate }}
</th>
<td mat-cell
*matCellDef="let element">{{ pagingComponent.getPageSize() * (pagingComponent.getPageIndex()-1) + dataSource.filteredData.indexOf(element) + 1 }}
*matCellDef="let element">{{ pagingComponent.getPageSize() * (pagingComponent.getPageIndex()-1) + getDataSource().filteredData.indexOf(element) + 1 }}
</td>
</ng-container>

@@ -36,10 +36,12 @@
{{ 'overview.image' | translate }}
</th>
<td mat-cell *matCellDef="let element" class="btn-link" (click)="navigateToProductDetails(element)">
<img *ngIf="element.imageUrl !== null && element.imageUrl !== undefined"
src="{{element.imageUrl}}" width="40" height="40"/>
<img *ngIf="element.imageUrl === null || element.imageUrl === undefined"
src="/assets/images/icons/dummy-product.png" width="40" height="40" alt="" />
<ng-container *ngIf="getProductFromElement(element) as product">
<img *ngIf="product.imageUrl !== null && product.imageUrl !== undefined"
src="{{product.imageUrl}}" width="40" height="40"/>
<img *ngIf="product.imageUrl === null || product.imageUrl === undefined"
src="/assets/images/icons/dummy-product.png" width="40" height="40" alt="" />
</ng-container>
</td>
</ng-container>

@@ -49,25 +51,9 @@
{{ 'overview.productname' | translate }}
</th>
<td mat-cell *matCellDef="let element">
<span class="btn-link" (click)="navigateToProductDetails(element)">{{ element.name }}</span>
</td>
</ng-container>

<ng-container matColumnDef="storage">
<th mat-header-cell *matHeaderCellDef mat-sort-header
sortActionDescription="{{ 'overview.sort' | translate }}: {{ 'overview.storage' | translate }}">
{{ 'overview.storage' | translate }}
</th>
<td mat-cell *matCellDef="let element">{{ element.storage }}
</td>
</ng-container>

<ng-container matColumnDef="number">
<th mat-header-cell *matHeaderCellDef mat-sort-header
sortActionDescription="{{ 'overview.sort' | translate }}: {{ 'overview.number-long' | translate }}">
{{ 'overview.number-long' | translate }}
</th>
<td mat-cell *matCellDef="let element">{{ element.number }}
<ng-container *ngIf="getProductFromElement(element) as product">
<span class="btn-link" (click)="navigateToProductDetails(element)">{{ product.name }}</span>
</ng-container>
</td>
</ng-container>

@@ -76,8 +62,7 @@
{{ 'overview.unassign' | translate }}
</th>
<td mat-cell class="spt-button-td text-end" *matCellDef="let element">
<span class="spt-icon-unassign"
(click)="unassignProduct(element)"></span>
<span class="spt-icon-unassign" (click)="unassignProduct(element)"></span>
</td>
</ng-container>



+ 85
- 32
matsen-tool/src/app/_views/products/product-list/product-list.component.ts Dosyayı Görüntüle

@@ -3,9 +3,9 @@ import {MatSort, Sort} from "@angular/material/sort";
import {PagingComponent} from "@app/_components/paging/paging.component";
import {Subscription} from "rxjs";
import {
ContactJsonld, ContactPartnerProductJsonld, ContactPartnerProductService,
ContactJsonld, ContactPartnerProductJsonld, ContactPartnerProductService, PartnerFollowJsonld,
PartnerJsonld, PartnerProductJsonld,
PartnerProductService, PostJsonld,
PartnerProductService,
ProductJsonld,
ProductService,
UserJsonld,
@@ -18,6 +18,7 @@ import {OrderFilter} from "@app/_models/orderFilter";
import {NewProductComponent} from "@app/_views/products/new-product/new-product.component";
import {AssignProductComponent} from "@app/_views/products/assign-product/assign-product.component";
import {TranslateService} from "@ngx-translate/core";
type GeneralDataSource = MatTableDataSource<any>;

@Component({
selector: 'app-product-list',
@@ -36,7 +37,14 @@ export class ProductListComponent implements OnInit, AfterViewInit {

protected productsSub: Subscription;
protected products: Array<ProductJsonld>;
protected dataSource;
protected userProducts: Array<PartnerFollowJsonld>;
protected partnerProducts: Array<PartnerProductJsonld>;
protected contactPartnerProducts: Array<ContactPartnerProductJsonld>;

protected dataSourceProducts;
protected dataSourceUserProducts;
protected dataSourcePartnerProducts;
protected dataSourceContactPartnerProducts;
protected bShowNewProductButton: boolean;
protected nameOrderAsc: OrderFilter;

@@ -50,11 +58,17 @@ export class ProductListComponent implements OnInit, AfterViewInit {
protected appHelperService: AppHelperService,
) {
this.sort = new MatSort();
this.displayedColumns = ['details', 'pos', 'image', 'name', 'storage', 'number'];
this.displayedColumns = ['details', 'pos', 'image', 'name'];

this.productsSub = new Subscription();
this.products = [];
this.dataSource = new MatTableDataSource<ProductJsonld>(this.products);
this.userProducts = [];
this.partnerProducts = [];
this.contactPartnerProducts = [];
this.dataSourceProducts = new MatTableDataSource<ProductJsonld>(this.products);
this.dataSourceUserProducts = new MatTableDataSource<PartnerFollowJsonld>(this.userProducts);
this.dataSourcePartnerProducts = new MatTableDataSource<PartnerProductJsonld>(this.partnerProducts);
this.dataSourceContactPartnerProducts = new MatTableDataSource<ContactPartnerProductJsonld>(this.contactPartnerProducts);
this.bShowNewProductButton = true;
this.nameOrderAsc = OrderFilter.Asc;
}
@@ -68,13 +82,24 @@ export class ProductListComponent implements OnInit, AfterViewInit {
}

ngAfterViewInit() {
this.dataSource.sort = this.sort;
this.dataSource.paginator = this.pagingComponent.paginator;
this.dataSourceProducts.sort = this.sort;
this.dataSourceProducts.paginator = this.pagingComponent.paginator;
this.pagingComponent.getData();
}

getData = (searchValue = undefined) => {
getDataSource(): GeneralDataSource {
if (this.user !== undefined) {
return this.dataSourceUserProducts;
} else if (this.partner !== undefined) {
return this.dataSourcePartnerProducts;
} else if (this.contact !== undefined) {
return this.dataSourceContactPartnerProducts;
} else {
return this.dataSourceProducts;
}
}

getData = (searchValue = undefined) => {
if (this.user !== undefined) {
this.getUserProducts(searchValue);
} else if (this.partner !== undefined) {
@@ -97,7 +122,7 @@ export class ProductListComponent implements OnInit, AfterViewInit {
data => {
this.products = data["hydra:member"];
this.pagingComponent.setDataLength(Number(data["hydra:totalItems"]));
this.dataSource = new MatTableDataSource<ProductJsonld>(this.products);
this.dataSourceProducts = new MatTableDataSource<ProductJsonld>(this.products);
}
);
}
@@ -122,7 +147,7 @@ export class ProductListComponent implements OnInit, AfterViewInit {

})
this.pagingComponent.setDataLength(Number(data["hydra:totalItems"]));
this.dataSource = new MatTableDataSource<ProductJsonld>(this.products);
this.dataSourceProducts = new MatTableDataSource<ProductJsonld>(this.products);
}
);
}
@@ -139,15 +164,9 @@ export class ProductListComponent implements OnInit, AfterViewInit {
searchValue,
).subscribe(
data => {
let partnerProducts = data["hydra:member"];
this.products = [];
partnerProducts.forEach(item => {
if (item.product) {
this.products.push(item.product);
}
})
this.partnerProducts = data["hydra:member"];
this.pagingComponent.setDataLength(Number(data["hydra:totalItems"]));
this.dataSource = new MatTableDataSource<ProductJsonld>(this.products);
this.dataSourcePartnerProducts = new MatTableDataSource<PartnerProductJsonld>(this.partnerProducts);
}
);
}
@@ -161,19 +180,38 @@ export class ProductListComponent implements OnInit, AfterViewInit {
searchValue
).subscribe(
data => {
let contactProduct = data["hydra:member"];
this.products = [];
contactProduct.forEach(item => {
if (item.product) {
this.products.push(item.product);
}
})
this.contactPartnerProducts = data["hydra:member"];
this.pagingComponent.setDataLength(Number(data["hydra:totalItems"]));
this.dataSource = new MatTableDataSource<ProductJsonld>(this.products);
this.dataSourceContactPartnerProducts = new MatTableDataSource<ContactPartnerProductJsonld>(this.contactPartnerProducts);
}
);
}

getElementValue(element: any, field: any): any {
if (this.user !== undefined) {
return element['partner'][field];
} else if (this.partner !== undefined) {
return element['partner'][field];
} else if (this.contact !== undefined) {
return element[field];
} else {
return element[field];
}
}

getProductFromElement(element: any): ProductJsonld {
console.log(element['product']);
if (this.user !== undefined) {
return element['product'];
} else if (this.partner !== undefined) {
return element['product'];
} else if (this.contact !== undefined) {
return element['product'];
} else {
return element;
}
}

onSortChange = (sortState: Sort) => {
this.pagingComponent.resetPageIndex()

@@ -188,7 +226,16 @@ export class ProductListComponent implements OnInit, AfterViewInit {
}

navigateToProductDetails(element: any) {
const product: ProductJsonld = element as ProductJsonld;
let product: ProductJsonld;
if (this.user !== undefined) {
product = element['partner'];
} else if (this.partner !== undefined) {
product = element['partner'];
} else if (this.contact !== undefined) {
product = element['partnerProduct']['partner'];
} else {
product = element;
}
this.router.navigate(['/product', this.appHelperService.extractId(product.id)]);
}

@@ -232,15 +279,21 @@ export class ProductListComponent implements OnInit, AfterViewInit {
this.translateService.get('system.confirm-unassign').subscribe((translation: string) => {
confirmMessage = translation;
});
const userConfirmed = window.confirm(confirmMessage);
const userConfirmed = confirm(confirmMessage);
if (userConfirmed) {
console.log(element);
console.log(this.partner);
console.log(this.contact);
if (this.partner) {
//this.contactPartnerProductService.contactPartnerProductsIdDelete(element.id)
this.partnerProductService.partnerProductsIdDelete(this.appHelperService.extractId(element.id)).subscribe(
data => {
this.getData(this.pagingComponent.getSearchValue());
}
);
} else if (this.contact) {
//this.partnerProductService.partnerProductsIdDelete(element.id)
this.contactPartnerProductService.contactPartnerProductsIdDelete(this.appHelperService.extractId(element.id)).subscribe(
data => {
this.getData(this.pagingComponent.getSearchValue());
}
);
}
}
}


+ 6
- 0
matsen-tool/src/app/_views/tasks/task-list/task-list.component.html Dosyayı Görüntüle

@@ -24,6 +24,12 @@
<div class="row pb-1">
<div class="col-12">
<div class="info-box">
<span *ngIf="currentUser?.userResource?.id == appHelperService.extractId(task.assignedToIri)" class="position-absolute bi bi-pencil p-2"
data-type="user-tool"
data-action="edit"
(click)="openModalEditTask(task)"
>
</span>
<span class="importance" [attr.data-importance]="task.prio"></span>
<span class="due-date pe-3">{{ task.dueAt | date:'dd.MM.YYYY - HH:mm':'GMT+0000' }}
Uhr</span>


Yükleniyor…
İptal
Kaydet