added translations for headers in excel report files #60

Merged
naeem.ullah merged 3 commits from aconnect-UX/reporting-translation-updates into dev-pending-20-01-2026 6 days ago

@ -35,6 +35,10 @@ export class AppComponent {
this.direction = this.storageService.getItem('direction') || directions.LTR;
this.storageService.setItem('direction', this.direction);
// if (typeof document !== 'undefined') {
// document.documentElement.setAttribute('dir', this.direction);
// }
const userStr = this.storageService.getItem('user');
if (userStr) {
try {

@ -1,28 +1,66 @@
import { Injectable } from '@angular/core';
import { saveAs } from 'file-saver';
import * as XLSX from 'xlsx';
import { TranslateService } from '@ngx-translate/core';
import { EXCEL_FILE_EXTENSION, EXCEL_FILE_TYPE } from '../../utils/app.constants';
import { StorageService } from './storage.service';
import { supportedLanguages } from '../../utils/enums';
@Injectable({
providedIn: 'root'
})
export class ExcelExportService {
constructor() { }
private fileType = EXCEL_FILE_TYPE;
private fileExtension = EXCEL_FILE_EXTENSION;
private fileExtension = EXCEL_FILE_EXTENSION;
constructor(private translate: TranslateService, private storageService: StorageService) { }
public exportExcel(jsonData: any[], fileName: string): void {
const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(jsonData);
const wb: XLSX.WorkBook = { Sheets: { 'data': ws }, SheetNames: ['data'] };
const translatedData = this.translateHeaders(jsonData);
const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(translatedData);
const wb: XLSX.WorkBook = { Sheets: { data: ws }, SheetNames: ['data'] };
const excelBuffer: any = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
this.saveExcelFile(excelBuffer, fileName);
}
private translateHeaders(data: any[]): any[] {
if (!data?.length) return data;
return data.map(row => {
const newRow: any = {};
Object.keys(row).forEach(key => {
const candidates = [
key,
key.toLowerCase(),
key.toUpperCase(),
key.replace(/([A-Z])/g, '_$1').toUpperCase()
];
let translatedKey = key;
for (const candidate of candidates) {
const value = this.translate.instant(candidate);
if (value !== candidate) {
translatedKey = value;
break;
}
}
newRow[translatedKey] = row[key];
});
return newRow;
});
}
private saveExcelFile(buffer: any, fileName: string): void {
const data: Blob = new Blob([buffer], {type: this.fileType});
saveAs.saveAs(data, fileName + this.fileExtension);
const data: Blob = new Blob([buffer], { type: this.fileType });
saveAs(data, fileName + this.fileExtension);
}
}

@ -13,7 +13,7 @@ import { PasswordHideShowComponent } from '../../shared/components/password-hide
@Component({
selector: 'app-reset-password-modal',
standalone: true,
imports: [TranslateModule, ReactiveFormsModule, CommonModule, PasswordHideShowComponent],
imports: [TranslateModule, ReactiveFormsModule, CommonModule],
templateUrl: './reset-password-modal.component.html'
})
export class ResetPasswordModalComponent implements OnInit, OnChanges {

@ -269,5 +269,26 @@
"SAVED_SUCCESSFULLY": "تم الحفظ بنجاح",
"activityLogs": "سجلات النشاط",
"activityLogDetails": "تفاصيل سجل النشاط",
"resetPasswordButton": "إعادة تعيين كلمة المرور"
"resetPasswordButton": "إعادة تعيين كلمة المرور",
"dateTime": "التاريخ والوقت",
"responseCode": "رمز الاستجابة",
"remoteIp": "IP البعيد",
"requestBody": "هيئة الطلب",
"requestUri": "طلب URI",
"method": "طريقة",
"id": "بطاقة تعريف",
"logId": "معرف السجل",
"porOrgacode": "رمز المنظمة",
"drMbmbkmsnumber": "رقم الحساب المدين",
"crMbmbkmsnumber": "رقم حساب الائتمان",
"ppmPymdcode": "رمز الدفع",
"sgtGntrdate": "تاريخ المعاملة",
"sgtGntrcreateat": "تاريخ الإنشاء",
"updatedAt": "تم التحديث في",
"crPcaglacode": "حساب CR GL",
"drPcaGlacode": "حساب DR GL",
"transactionUri": "معرّف المعاملة",
"transactionCode": "رمز المعاملة",
"channelCode": "رمز القناة"
}

@ -276,5 +276,22 @@
"activityLogDetails": "Activity Log Details",
"transactionCode": "Transaction Code",
"transactionUri": "Transaction URI",
"resetPasswordButton": "Reset Password"
"resetPasswordButton": "Reset Password",
"dateTime": "Date Time",
"responseCode": "Response Code",
"remoteIp": "Remote IP",
"requestBody": "Request Body",
"requestUri": "Request URI",
"method": "Method",
"id": "Id",
"logId": "Log ID",
"porOrgacode": "Organization Code",
"drMbmbkmsnumber": "Debit Account Number",
"crMbmbkmsnumber": "Credit Account Number",
"ppmPymdcode": "Payment Code",
"sgtGntrdate": "Transaction Date",
"sgtGntrcreateat": "Creation Date",
"updatedAt": "Updated At",
"channelCode": "Channel Code"
}
Loading…
Cancel
Save