Commit 0ede5a33 by Nattana Chaiyamat

ภาษาไทย อังกฤษ

parent 8e8e7ae4
......@@ -38,21 +38,22 @@
<td class="font-medium !p-2 align-start">{{'NameSurname' | translate}}</td>
<td class="!p-2 align-start">:</td>
<td class="font-medium !p-2 align-start">
{{appraisalIdp.apsassessy.thFullName || ''}}
{{translateText(appraisalIdp.apsassessy.thFullName,appraisalIdp.apsassessy.engFullName
)}}
</td>
</tr>
<tr class="!border-0">
<td class="font-medium !p-2 align-start">{{'Position' | translate}}</td>
<td class="!p-2 align-start">:</td>
<td class="font-medium !p-2 align-start !text-warp">
{{appraisalIdp.apsassessy.position.tdesc || ''}}
{{translateText(appraisalIdp.apsassessy.position.tdesc,appraisalIdp.apsassessy.position.tdesc)}}
</td>
</tr>
<tr class="!border-0">
<td class="font-medium !p-2 align-start">{{'Job' | translate}}</td>
<td class="!p-2 align-start">:</td>
<td class="font-medium !p-2 align-start !text-warp">
{{appraisalIdp.apsassessy.job.tdesc || ""}}
{{translateText(appraisalIdp.apsassessy.job.tdesc,appraisalIdp.apsassessy.job.tdesc)}}
</td>
</tr>
<tr class="!border-0">
......@@ -60,7 +61,7 @@
</td>
<td class="!p-2 align-start">:</td>
<td class="font-medium !p-2 align-start !text-warp">
{{appraisalIdp.apsassessy.bu1.tdesc}}
{{translateText(appraisalIdp.apsassessy.bu1.tdesc,appraisalIdp.apsassessy.bu1.edesc)}}
</td>
</tr>
</tbody>
......@@ -80,21 +81,22 @@
<td class="font-medium !p-2 align-start">{{'NameSurname' | translate}}</td>
<td class="!p-2 align-start">:</td>
<td class="font-medium !p-2 align-start">
{{appraisalIdp.boss.thFullName || ''}}
{{translateText(appraisalIdp.boss.thFullName,appraisalIdp.boss.engFullName
)}}
</td>
</tr>
<tr class="!border-0">
<td class="font-medium !p-2 align-start">{{'Position' | translate}}</td>
<td class="!p-2 align-start">:</td>
<td class="font-medium !p-2 align-start !text-warp">
{{appraisalIdp.boss.position.tdesc || ''}}
{{translateText(appraisalIdp.boss.position.tdesc,appraisalIdp.boss.position.edesc)}}
</td>
</tr>
<tr class="!border-0">
<td class="font-medium !p-2 align-start">{{'Job' | translate}}</td>
<td class="!p-2 align-start">:</td>
<td class="font-medium !p-2 align-start !text-warp">
{{appraisalIdp.boss.job.tdesc || ""}}
{{translateText(appraisalIdp.boss.job.tdesc,appraisalIdp.boss.job.edesc)}}
</td>
</tr>
<tr class="!border-0">
......@@ -102,7 +104,7 @@
</td>
<td class="!p-2 align-start">:</td>
<td class="font-medium !p-2 align-start !text-warp">
{{appraisalIdp.boss.bu1.tdesc}}
{{translateText(appraisalIdp.boss.bu1.tdesc,appraisalIdp.boss.bu1.edesc)}}
</td>
</tr>
</tbody>
......
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, SimpleChanges, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { TranslateService } from '@ngx-translate/core';
import { Idp } from 'src/app/shared/model/competency.model';
import { CompetencycourseMiniModel, MyCompetencycourseMiniModel } from 'src/app/shared/model/competencycourse-mini.model';
import { IdpFormModel } from 'src/app/shared/model/idp-form.model';
......@@ -52,6 +53,7 @@ export class PmsIdpComponent {
@ViewChild("competencycourseModal") competencycourseModal: any;
dialogRefCompetencycourseModal: any
constructor(private evaluationIdpService: EvaluationIdpService,
private translateService: TranslateService,
private employeeService: EmployeeService,
private competencycourseService: CompetencycourseService,
private cdr: ChangeDetectorRef,
......@@ -342,63 +344,65 @@ export class PmsIdpComponent {
// }
async exportPdf() {
this.pdfPrintCheck = 1;
const el = this.pdfArea?.nativeElement;
if (!el) return;
// 👉 ลบ shadow ออกจากทุก element ที่มี shadow class
const shadowEls = el.querySelectorAll('.shadow');
shadowEls.forEach(e => e.classList.remove('shadow'));
const mod: any = await import('html2pdf.js');
const html2pdf = mod.default ?? mod;
const cleanupScale = this.expandToFullWidthThenScale(el);
const cleanupUnclip = this.unclipOverflows(el);
const prevBodyOverflow = document.body.style.overflow;
document.body.style.overflow = 'hidden';
const fullW = el.scrollWidth;
const fullH = el.scrollHeight;
const epsilon = 2;
const opt = {
margin: [10, 10, 10, 10],
filename: `pms-${this.evaluateeId || 'employee'}-${new Date().toISOString().slice(0, 10)}.pdf`,
image: { type: 'jpeg', quality: 0.96 },
html2canvas: {
scale: 2,
useCORS: true,
logging: false,
scrollX: 0,
scrollY: -window.scrollY,
width: 800,
height: Math.max(0, fullH - epsilon),
windowWidth: 800,
windowHeight: Math.max(0, fullH - epsilon),
},
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' },
pagebreak: { mode: ['css', 'legacy'], avoid: ['.no-break', 'table', 'img'] },
onclone: (doc: any) => {
doc.querySelectorAll('[data-hide-in-pdf]').forEach((el: any) => el.remove());
},
};
try {
await html2pdf().from(el).set(opt).save();
} finally {
cleanupUnclip();
cleanupScale();
document.body.style.overflow = prevBodyOverflow;
// 👉 คืน class shadow กลับ
shadowEls.forEach(e => e.classList.add('shadow'));
}
this.pdfPrintCheck = 1;
const el = this.pdfArea?.nativeElement;
if (!el) return;
// 👉 ลบ shadow ออกจากทุก element ที่มี shadow class
const shadowEls = el.querySelectorAll('.shadow');
shadowEls.forEach(e => e.classList.remove('shadow'));
const mod: any = await import('html2pdf.js');
const html2pdf = mod.default ?? mod;
const cleanupScale = this.expandToFullWidthThenScale(el);
const cleanupUnclip = this.unclipOverflows(el);
const prevBodyOverflow = document.body.style.overflow;
document.body.style.overflow = 'hidden';
const fullW = el.scrollWidth;
const fullH = el.scrollHeight;
const epsilon = 2;
const opt = {
margin: [10, 10, 10, 10],
filename: `pms-${this.evaluateeId || 'employee'}-${new Date().toISOString().slice(0, 10)}.pdf`,
image: { type: 'jpeg', quality: 0.96 },
html2canvas: {
scale: 2,
useCORS: true,
logging: false,
scrollX: 0,
scrollY: -window.scrollY,
width: 800,
height: Math.max(0, fullH - epsilon),
windowWidth: 800,
windowHeight: Math.max(0, fullH - epsilon),
},
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' },
pagebreak: { mode: ['css', 'legacy'], avoid: ['.no-break', 'table', 'img'] },
onclone: (doc: any) => {
doc.querySelectorAll('[data-hide-in-pdf]').forEach((el: any) => el.remove());
},
};
this.pdfPrintCheck = 0;
}
try {
await html2pdf().from(el).set(opt).save();
} finally {
cleanupUnclip();
cleanupScale();
document.body.style.overflow = prevBodyOverflow;
// 👉 คืน class shadow กลับ
shadowEls.forEach(e => e.classList.add('shadow'));
}
this.pdfPrintCheck = 0;
}
translateText(th?: string, en?: string) {
return this.translateService.getCurrentLang() == 'th' ? (th || '') : (en || '')
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment