add admin interface, angular migration
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||
import { MatPaginator, PageEvent } from '@angular/material/paginator';
|
||||
import { MatSort } from '@angular/material/sort';
|
||||
import { MatTableDataSource } from '@angular/material/table';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { I18nService } from 'src/app/services/i18n.service';
|
||||
import { VoucherMappingManagementService } from 'src/app/services/admin/vouchermapping.management.service';
|
||||
import { ConfirmDialog } from 'src/app/ui/confirm/confirm.component';
|
||||
import { AdminVoucherMappingEditDialog } from './voucher-mapping.edit';
|
||||
|
||||
@Component({
|
||||
standalone: false,
|
||||
selector: 'app-admin-voucher-mappings',
|
||||
templateUrl: './voucher-mappings.component.html',
|
||||
styleUrls: ['../admin.scss']
|
||||
})
|
||||
export class AdminVoucherMappingsComponent implements OnInit {
|
||||
displayedColumns: string[] = ['id', 'name', 'voucher', 'quota', 'free', 'actions'];
|
||||
dataSource: MatTableDataSource<any>;
|
||||
totalElements = 0;
|
||||
pageSize = 10;
|
||||
pageIndex = 0;
|
||||
|
||||
@ViewChild(MatPaginator) paginator!: MatPaginator;
|
||||
@ViewChild(MatSort) sort!: MatSort;
|
||||
|
||||
constructor(
|
||||
private voucherMappingManagementService: VoucherMappingManagementService,
|
||||
private i18n: I18nService,
|
||||
private dialog: MatDialog
|
||||
) {
|
||||
this.dataSource = new MatTableDataSource();
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
this.loadMappings();
|
||||
}
|
||||
|
||||
loadMappings(): void {
|
||||
this.voucherMappingManagementService.getVoucherMappings(this.pageIndex, this.pageSize).subscribe(
|
||||
(data: any) => {
|
||||
this.dataSource.data = data.content || data;
|
||||
this.totalElements = data.totalElements || data.length;
|
||||
},
|
||||
error => {
|
||||
console.error('Error loading voucher mappings:', error);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
onPageChange(event: PageEvent): void {
|
||||
this.pageIndex = event.pageIndex;
|
||||
this.pageSize = event.pageSize;
|
||||
this.loadMappings();
|
||||
}
|
||||
|
||||
onSortChange(sort: any): void {
|
||||
// Sorting can be implemented when backend supports it
|
||||
console.log('Sort change:', sort);
|
||||
}
|
||||
|
||||
deleteMapping(mapping: any): void {
|
||||
const dialogRef = this.dialog.open(ConfirmDialog, {
|
||||
data: {
|
||||
'label': 'admin.voucher_mappings.confirm_delete',
|
||||
'args': [mapping.name]
|
||||
}
|
||||
});
|
||||
|
||||
dialogRef.afterClosed().subscribe(result => {
|
||||
if (result) {
|
||||
this.voucherMappingManagementService.delete(mapping).subscribe(
|
||||
() => {
|
||||
this.loadMappings();
|
||||
},
|
||||
error => {
|
||||
console.error('Error deleting mapping:', error);
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
createMapping(): void {
|
||||
const dialogRef = this.dialog.open(AdminVoucherMappingEditDialog, {
|
||||
width: '600px',
|
||||
data: {}
|
||||
});
|
||||
|
||||
dialogRef.afterClosed().subscribe(result => {
|
||||
if (result) {
|
||||
this.loadMappings();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
editMapping(mapping: any): void {
|
||||
const dialogRef = this.dialog.open(AdminVoucherMappingEditDialog, {
|
||||
width: '600px',
|
||||
data: { voucherMapping: mapping }
|
||||
});
|
||||
|
||||
dialogRef.afterClosed().subscribe(result => {
|
||||
if (result) {
|
||||
this.loadMappings();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user