add admin interface, angular migration

This commit is contained in:
_Bastler
2025-11-09 01:58:54 +01:00
parent ff94ca05ce
commit 1acaf07825
100 changed files with 7129 additions and 50 deletions
@@ -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();
}
});
}
}