Spaces:
Running
Running
Update app.js
Browse files
app.js
CHANGED
|
@@ -383,9 +383,10 @@ async function exportExcel(){
|
|
| 383 |
if(!rows.length){ toast("لا يوجد بيانات لتصديرها."); return; }
|
| 384 |
|
| 385 |
const TEMPLATE_HEADERS = [
|
| 386 |
-
"التصنيف","نوع المشكلة","
|
| 387 |
"رقم الجوال","رقم الهوية ID","رقم الجهاز","تاريخ اليوم بالميلادي","الحالة","اسم الدعم الفني"
|
| 388 |
];
|
|
|
|
| 389 |
const mapRow = (r)=>{
|
| 390 |
const today = new Date();
|
| 391 |
const yyyy=today.getFullYear(), mm=String(today.getMonth()+1).padStart(2,"0"), dd=String(today.getDate()).padStart(2,"0");
|
|
@@ -393,7 +394,6 @@ async function exportExcel(){
|
|
| 393 |
return {
|
| 394 |
"التصنيف": r["التصنيف"]||"",
|
| 395 |
"نوع المشكلة": r["نوع المشكلة"]||"",
|
| 396 |
-
"وصف المشكلة": r["التصنيف"] || r["نوع المشكلة"] || "",
|
| 397 |
"المنطقة": r["المنطقة"]||"",
|
| 398 |
"اسم المسح": r["المسح"]||"",
|
| 399 |
"اسم المشغل": r["اسم صاحب المشكلة"]||"",
|
|
@@ -406,6 +406,65 @@ async function exportExcel(){
|
|
| 406 |
};
|
| 407 |
};
|
| 408 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 409 |
const wb = new ExcelJS.Workbook();
|
| 410 |
const ws = wb.addWorksheet("التذاكر", { views: [{ rightToLeft: true }] });
|
| 411 |
|
|
|
|
| 383 |
if(!rows.length){ toast("لا يوجد بيانات لتصديرها."); return; }
|
| 384 |
|
| 385 |
const TEMPLATE_HEADERS = [
|
| 386 |
+
"التصنيف","نوع المشكلة","المنطقة","اسم المسح","اسم المشغل",
|
| 387 |
"رقم الجوال","رقم الهوية ID","رقم الجهاز","تاريخ اليوم بالميلادي","الحالة","اسم الدعم الفني"
|
| 388 |
];
|
| 389 |
+
|
| 390 |
const mapRow = (r)=>{
|
| 391 |
const today = new Date();
|
| 392 |
const yyyy=today.getFullYear(), mm=String(today.getMonth()+1).padStart(2,"0"), dd=String(today.getDate()).padStart(2,"0");
|
|
|
|
| 394 |
return {
|
| 395 |
"التصنيف": r["التصنيف"]||"",
|
| 396 |
"نوع المشكلة": r["نوع المشكلة"]||"",
|
|
|
|
| 397 |
"المنطقة": r["المنطقة"]||"",
|
| 398 |
"اسم المسح": r["المسح"]||"",
|
| 399 |
"اسم المشغل": r["اسم صاحب المشكلة"]||"",
|
|
|
|
| 406 |
};
|
| 407 |
};
|
| 408 |
|
| 409 |
+
const wb = new ExcelJS.Workbook();
|
| 410 |
+
const ws = wb.addWorksheet("التذاكر", { views: [{ rightToLeft: true }] });
|
| 411 |
+
|
| 412 |
+
const colWidths = [16,18,16,18,20,18,18,18,22,14,18];
|
| 413 |
+
TEMPLATE_HEADERS.forEach((h,i)=> ws.getColumn(i+1).width = colWidths[i]||18);
|
| 414 |
+
|
| 415 |
+
ws.addRow(TEMPLATE_HEADERS);
|
| 416 |
+
const headerRow = ws.getRow(1);
|
| 417 |
+
headerRow.height = 24;
|
| 418 |
+
headerRow.eachCell((cell)=>{
|
| 419 |
+
cell.font = { bold:true, color:{argb:"FFFFFFFF"} };
|
| 420 |
+
cell.alignment = { horizontal:"center", vertical:"middle" };
|
| 421 |
+
cell.fill = { type:"pattern", pattern:"solid", fgColor:{argb:"FF4137A8"} };
|
| 422 |
+
cell.border = {
|
| 423 |
+
top:{style:"thin",color:{argb:"FFCDD2E1"}},
|
| 424 |
+
bottom:{style:"thin",color:{argb:"FFCDD2E1"}},
|
| 425 |
+
left:{style:"thin",color:{argb:"FFE5E7EB"}},
|
| 426 |
+
right:{style:"thin",color:{argb:"FFE5E7EB"}}
|
| 427 |
+
};
|
| 428 |
+
});
|
| 429 |
+
|
| 430 |
+
const toTextCols = new Set(["رقم الجوال","رقم الهوية ID","رقم الجهاز"]);
|
| 431 |
+
const rawRows = readTable();
|
| 432 |
+
rawRows.forEach((r,idx)=>{
|
| 433 |
+
const m = mapRow(r);
|
| 434 |
+
const vals = TEMPLATE_HEADERS.map(h => (m[h] ?? ""));
|
| 435 |
+
const row = ws.addRow(vals);
|
| 436 |
+
row.alignment = { horizontal:"center", vertical:"middle" };
|
| 437 |
+
const even = (idx % 2) === 1;
|
| 438 |
+
row.eachCell((cell, colNumber)=>{
|
| 439 |
+
cell.border = {
|
| 440 |
+
top:{style:"thin",color:{argb:"FFE5E7EB"}},
|
| 441 |
+
bottom:{style:"thin",color:{argb:"FFE5E7EB"}},
|
| 442 |
+
left:{style:"thin",color:{argb:"FFE5E7EB"}},
|
| 443 |
+
right:{style:"thin",color:{argb:"FFE5E7EB"}}
|
| 444 |
+
};
|
| 445 |
+
if(even) cell.fill = { type:"pattern", pattern:"solid", fgColor:{argb:"FFF5F8FF"} };
|
| 446 |
+
const header = TEMPLATE_HEADERS[colNumber-1];
|
| 447 |
+
if(toTextCols.has(header)) cell.value = String(cell.value ?? "");
|
| 448 |
+
});
|
| 449 |
+
});
|
| 450 |
+
|
| 451 |
+
const ts = new Date().toISOString().replace(/\D/g,"").slice(0,14);
|
| 452 |
+
const filename = `Ticket_${ts}.xlsx`;
|
| 453 |
+
const buffer = await wb.xlsx.writeBuffer();
|
| 454 |
+
const blob = new Blob([buffer], { type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
|
| 455 |
+
const file = new File([blob], filename, { type: blob.type });
|
| 456 |
+
|
| 457 |
+
if (navigator.canShare && navigator.canShare({ files: [file] })) {
|
| 458 |
+
try { await navigator.share({ files:[file], title:"ملف التذاكر" }); toast("تمت المشاركة/الحفظ."); return; } catch(e){}
|
| 459 |
+
}
|
| 460 |
+
const url = URL.createObjectURL(blob);
|
| 461 |
+
const a = document.createElement("a"); a.href=url; a.download=filename;
|
| 462 |
+
document.body.appendChild(a); a.click(); a.remove();
|
| 463 |
+
setTimeout(()=>URL.revokeObjectURL(url),1000);
|
| 464 |
+
toast("تم تنزيل الملف بتنسيق القالب.");
|
| 465 |
+
}
|
| 466 |
+
|
| 467 |
+
|
| 468 |
const wb = new ExcelJS.Workbook();
|
| 469 |
const ws = wb.addWorksheet("التذاكر", { views: [{ rightToLeft: true }] });
|
| 470 |
|