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