Spaces:
Running
Running
Update app.js
Browse files
app.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
| 1 |
const EXPORT_COLUMNS = [
|
| 2 |
"التصنيف","نوع المشكلة","وقت حدوث المشكلة","اسم صاحب المشكلة",
|
| 3 |
"رقم الهوية","رقم الجهاز","رقم الجوال","المسح","المنطقة","اسم الدعم الفني","الحالة"
|
|
@@ -40,7 +43,8 @@ const arabicDigitsMap = {"٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","
|
|
| 40 |
|
| 41 |
function normalizeText(s){
|
| 42 |
if(typeof s!=="string") return "";
|
| 43 |
-
return s
|
|
|
|
| 44 |
.replace(/[\u200f\u200e\u202a-\u202e\u2066-\u2069\u00a0]/g," ")
|
| 45 |
.replace(/[٠-٩]/g,d=>arabicDigitsMap[d])
|
| 46 |
.replace(/[ــ]+/g,"")
|
|
@@ -48,9 +52,9 @@ function normalizeText(s){
|
|
| 48 |
.replace(/\n{3,}/g,"\n\n")
|
| 49 |
.trim();
|
| 50 |
}
|
| 51 |
-
function lettersOnly(ar){ return (ar||"").replace(/[^A-Za-z\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\s]/g,"").replace(/\s{2,}/g," ").trim()
|
| 52 |
-
function alnumAr(s){ return (s||"").replace(/[^0-9A-Za-z\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\s\-\._/]/g,"").replace(/\s{2,}/g," ").trim()
|
| 53 |
-
function digitsOnly(s){ return (s||"").replace(/\D+/g,"")
|
| 54 |
|
| 55 |
const LABEL_FIXES = [
|
| 56 |
[/(^|\n)\s*نوع\s*المشكله/gi, "$1نوع المشكلة"],
|
|
@@ -59,11 +63,15 @@ const LABEL_FIXES = [
|
|
| 59 |
[/(^|\n)\s*رقم\s*الهويه/gi, "$1رقم الهوية"],
|
| 60 |
[/(^|\n)\s*المنطقه/gi, "$1المنطقة"],
|
| 61 |
[/(^|\n)\s*اسم\s*المنطقة/gi, "$1المنطقة"],
|
| 62 |
-
[/(^|\n)
|
| 63 |
[/(^|\n)\s*الهاتف/gi, "$1رقم الجوال"],
|
| 64 |
[/(^|\n)\s*جوال/gi, "$1رقم الجوال"]
|
| 65 |
];
|
| 66 |
-
function fixLabels(s){
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
|
| 68 |
const H_MONTHS = ["محرم","صفر","ربيع الأول","ربيع الاول","ربيع الآخر","ربيع الاخر","جمادى الأولى","جمادى الاولى","جمادى الآخرة","جمادى الاخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو القعده","ذو الحجة","ذو الحجه"];
|
| 69 |
function monthIndexHijri(name){
|
|
@@ -446,12 +454,14 @@ const SAMPLE = `نوع المشكلة: لا استطيع اكمال الاستم
|
|
| 446 |
المسح: الخبر
|
| 447 |
المنطقة: الشرقية`;
|
| 448 |
|
| 449 |
-
const STATE_KEY="
|
| 450 |
const ALL_STATE_KEYS=[
|
| 451 |
"ticketParserState_v8","ticketParserState_v9","ticketParserState_v10",
|
| 452 |
"ticketParserState_v10_1","ticketParserState_v10_2","ticketParserState_v10_3",
|
| 453 |
"ticketParserState_v10_5","ticketParserState_v10_6","ticketParserState_v10_7",
|
| 454 |
-
"ticketParserState_v10_8","ticketParserState_v10_9","ticketParserState_v10_10",
|
|
|
|
|
|
|
| 455 |
];
|
| 456 |
|
| 457 |
function ensureColumns(rows, agentName, defaultRegion){
|
|
@@ -526,6 +536,25 @@ function updateThemeLabel(){
|
|
| 526 |
btn.textContent=document.body.classList.contains("dark")?"☀️ وضع نهار":"🌙 وضع ليلي";
|
| 527 |
}
|
| 528 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 529 |
function init(){
|
| 530 |
const parseBtn=document.getElementById("btn-parse");
|
| 531 |
const exportBtn=document.getElementById("btn-export");
|
|
@@ -535,8 +564,13 @@ function init(){
|
|
| 535 |
const rawEl=document.getElementById("raw");
|
| 536 |
const agentEl=document.getElementById("agentName");
|
| 537 |
const regionEl=document.getElementById("regionDefault");
|
|
|
|
|
|
|
| 538 |
|
| 539 |
rawEl.placeholder=SAMPLE;
|
|
|
|
|
|
|
|
|
|
| 540 |
loadState();
|
| 541 |
|
| 542 |
parseBtn.addEventListener("click", ()=>{
|
|
@@ -575,6 +609,9 @@ function init(){
|
|
| 575 |
else if(e.key==="Escape"){ e.preventDefault(); clearAll(); }
|
| 576 |
});
|
| 577 |
|
|
|
|
|
|
|
|
|
|
| 578 |
setButtonsEnabled(!!document.getElementById("tbody")?.children.length);
|
| 579 |
updateThemeLabel();
|
| 580 |
}
|
|
|
|
| 1 |
+
const ACCESS_PASSWORDS = ["12345", "12345678"];
|
| 2 |
+
const ACCESS_KEY = "ticket_gate_ok_v1";
|
| 3 |
+
|
| 4 |
const EXPORT_COLUMNS = [
|
| 5 |
"التصنيف","نوع المشكلة","وقت حدوث المشكلة","اسم صاحب المشكلة",
|
| 6 |
"رقم الهوية","رقم الجهاز","رقم الجوال","المسح","المنطقة","اسم الدعم الفني","الحالة"
|
|
|
|
| 43 |
|
| 44 |
function normalizeText(s){
|
| 45 |
if(typeof s!=="string") return "";
|
| 46 |
+
return s
|
| 47 |
+
.replace(/\r\n/g,"\n")
|
| 48 |
.replace(/[\u200f\u200e\u202a-\u202e\u2066-\u2069\u00a0]/g," ")
|
| 49 |
.replace(/[٠-٩]/g,d=>arabicDigitsMap[d])
|
| 50 |
.replace(/[ــ]+/g,"")
|
|
|
|
| 52 |
.replace(/\n{3,}/g,"\n\n")
|
| 53 |
.trim();
|
| 54 |
}
|
| 55 |
+
function lettersOnly(ar){ return (ar||"").replace(/[^A-Za-z\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\s]/g,"").replace(/\s{2,}/g," ").trim() }
|
| 56 |
+
function alnumAr(s){ return (s||"").replace(/[^0-9A-Za-z\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\s\-\._/]/g,"").replace(/\s{2,}/g," ").trim() }
|
| 57 |
+
function digitsOnly(s){ return (s||"").replace(/\D+/g,"") }
|
| 58 |
|
| 59 |
const LABEL_FIXES = [
|
| 60 |
[/(^|\n)\s*نوع\s*المشكله/gi, "$1نوع المشكلة"],
|
|
|
|
| 63 |
[/(^|\n)\s*رقم\s*الهويه/gi, "$1رقم الهوية"],
|
| 64 |
[/(^|\n)\s*المنطقه/gi, "$1المنطقة"],
|
| 65 |
[/(^|\n)\s*اسم\s*المنطقة/gi, "$1المنطقة"],
|
| 66 |
+
[/(^|\n)\س*اسم\s*المسح/gi, "$1المسح"],
|
| 67 |
[/(^|\n)\s*الهاتف/gi, "$1رقم الجوال"],
|
| 68 |
[/(^|\n)\s*جوال/gi, "$1رقم الجوال"]
|
| 69 |
];
|
| 70 |
+
function fixLabels(s){
|
| 71 |
+
let t=s;
|
| 72 |
+
LABEL_FIXES.forEach(([re,rep])=> t=t.replace(re,rep));
|
| 73 |
+
return t;
|
| 74 |
+
}
|
| 75 |
|
| 76 |
const H_MONTHS = ["محرم","صفر","ربيع الأول","ربيع الاول","ربيع الآخر","ربيع الاخر","جمادى الأولى","جمادى الاولى","جمادى الآخرة","جمادى الاخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو القعده","ذو الحجة","ذو الحجه"];
|
| 77 |
function monthIndexHijri(name){
|
|
|
|
| 454 |
المسح: الخبر
|
| 455 |
المنطقة: الشرقية`;
|
| 456 |
|
| 457 |
+
const STATE_KEY="ticketParserState_v10_15";
|
| 458 |
const ALL_STATE_KEYS=[
|
| 459 |
"ticketParserState_v8","ticketParserState_v9","ticketParserState_v10",
|
| 460 |
"ticketParserState_v10_1","ticketParserState_v10_2","ticketParserState_v10_3",
|
| 461 |
"ticketParserState_v10_5","ticketParserState_v10_6","ticketParserState_v10_7",
|
| 462 |
+
"ticketParserState_v10_8","ticketParserState_v10_9","ticketParserState_v10_10",
|
| 463 |
+
"ticketParserState_v10_11","ticketParserState_v10_12","ticketParserState_v10_13",
|
| 464 |
+
"ticketParserState_v10_14","ticketParserState_v10_15"
|
| 465 |
];
|
| 466 |
|
| 467 |
function ensureColumns(rows, agentName, defaultRegion){
|
|
|
|
| 536 |
btn.textContent=document.body.classList.contains("dark")?"☀️ وضع نهار":"🌙 وضع ليلي";
|
| 537 |
}
|
| 538 |
|
| 539 |
+
function showGate(){
|
| 540 |
+
document.getElementById("lockOverlay").style.display="flex";
|
| 541 |
+
setTimeout(()=>{document.getElementById("lockPass").focus()},0);
|
| 542 |
+
}
|
| 543 |
+
function hideGate(){
|
| 544 |
+
document.getElementById("lockOverlay").style.display="none";
|
| 545 |
+
}
|
| 546 |
+
function tryUnlock(){
|
| 547 |
+
const p=document.getElementById("lockPass").value||"";
|
| 548 |
+
if(ACCESS_PASSWORDS.includes(p)){
|
| 549 |
+
localStorage.setItem(ACCESS_KEY,"1");
|
| 550 |
+
hideGate();
|
| 551 |
+
}else{
|
| 552 |
+
const m=document.getElementById("lockMsg");
|
| 553 |
+
m.hidden=false;
|
| 554 |
+
setTimeout(()=>m.hidden=true,1500);
|
| 555 |
+
}
|
| 556 |
+
}
|
| 557 |
+
|
| 558 |
function init(){
|
| 559 |
const parseBtn=document.getElementById("btn-parse");
|
| 560 |
const exportBtn=document.getElementById("btn-export");
|
|
|
|
| 564 |
const rawEl=document.getElementById("raw");
|
| 565 |
const agentEl=document.getElementById("agentName");
|
| 566 |
const regionEl=document.getElementById("regionDefault");
|
| 567 |
+
const lockBtn=document.getElementById("lockBtn");
|
| 568 |
+
const lockPass=document.getElementById("lockPass");
|
| 569 |
|
| 570 |
rawEl.placeholder=SAMPLE;
|
| 571 |
+
|
| 572 |
+
if(localStorage.getItem(ACCESS_KEY)==="1") hideGate(); else showGate();
|
| 573 |
+
|
| 574 |
loadState();
|
| 575 |
|
| 576 |
parseBtn.addEventListener("click", ()=>{
|
|
|
|
| 609 |
else if(e.key==="Escape"){ e.preventDefault(); clearAll(); }
|
| 610 |
});
|
| 611 |
|
| 612 |
+
lockBtn.addEventListener("click", tryUnlock);
|
| 613 |
+
lockPass.addEventListener("keydown", e=>{ if(e.key==="Enter") tryUnlock(); });
|
| 614 |
+
|
| 615 |
setButtonsEnabled(!!document.getElementById("tbody")?.children.length);
|
| 616 |
updateThemeLabel();
|
| 617 |
}
|