Spaces:
Running
Running
Update app.js
Browse files
app.js
CHANGED
|
@@ -383,10 +383,9 @@ async function exportExcel(){
|
|
| 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,6 +393,7 @@ async function exportExcel(){
|
|
| 394 |
return {
|
| 395 |
"التصنيف": r["التصنيف"]||"",
|
| 396 |
"نوع المشكلة": r["نوع المشكلة"]||"",
|
|
|
|
| 397 |
"المنطقة": r["المنطقة"]||"",
|
| 398 |
"اسم المسح": r["المسح"]||"",
|
| 399 |
"اسم المشغل": r["اسم صاحب المشكلة"]||"",
|
|
@@ -406,65 +406,6 @@ async function exportExcel(){
|
|
| 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 |
|
|
|
|
| 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 |
return {
|
| 394 |
"التصنيف": r["التصنيف"]||"",
|
| 395 |
"نوع المشكلة": r["نوع المشكلة"]||"",
|
| 396 |
+
"وصف المشكلة": r["التصنيف"] || 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 |
|