barker/bookie/src/app/product-group/product-group-list/product-group-list.componen...

62 lines
2.0 KiB
TypeScript

import { Component, OnInit, ViewChild } from '@angular/core';
import { ProductGroupListDataSource } from './product-group-list-datasource';
import { ProductGroup } from '../../core/product-group';
import { ActivatedRoute, Router } from '@angular/router';
import { CdkDragDrop, moveItemInArray } from "@angular/cdk/drag-drop";
import { MatTable } from "@angular/material";
import { ToasterService } from "../../core/toaster.service";
import { ProductGroupService } from "../product-group.service";
import { BehaviorSubject } from "rxjs";
@Component({
selector: 'app-product-group-list',
templateUrl: './product-group-list.component.html',
styleUrls: ['./product-group-list.component.css']
})
export class ProductGroupListComponent implements OnInit {
@ViewChild('table', { static: true }) table: MatTable<ProductGroup>;
dataSource: ProductGroupListDataSource;
list: ProductGroup[];
data: BehaviorSubject<ProductGroup[]>;
/** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */
displayedColumns = ['name', 'discountLimit', 'isModifierCompulsory', 'groupType', 'isActive', 'isFixture'];
constructor(
private route: ActivatedRoute,
private router: Router,
private toaster: ToasterService,
private ser: ProductGroupService
) {
this.data = new BehaviorSubject([]);
this.data.subscribe((data: ProductGroup[]) => {
this.list = data;
})
}
ngOnInit() {
this.route.data
.subscribe((data: { list: ProductGroup[] }) => {
this.data.next(data.list);
});
this.dataSource = new ProductGroupListDataSource(this.data);
}
updateSortOrder() {
this.ser.updateSortOrder(this.list)
.subscribe(
(result) => {
this.toaster.show('Success', '');
},
(error) => {
this.toaster.show('Danger', error.error);
}
);
}
dropTable(event: CdkDragDrop<ProductGroup[]>) {
const prevIndex = this.list.indexOf(event.item.data);
moveItemInArray(this.list, prevIndex, event.currentIndex);
this.data.next(this.list);
}
}