stat2025 commited on
Commit
44eee27
·
verified ·
1 Parent(s): bbb974c

Update app.js

Browse files
Files changed (1) hide show
  1. app.js +45 -8
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.replace(/\r\n/g,"\n")
 
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)\s*اسم\s*المسح/gi, "$1المسح"],
63
  [/(^|\n)\s*الهاتف/gi, "$1رقم الجوال"],
64
  [/(^|\n)\s*جوال/gi, "$1رقم الجوال"]
65
  ];
66
- function fixLabels(s){ let t=s; LABEL_FIXES.forEach(([re,rep])=> t=t.replace(re,rep)); return t; }
 
 
 
 
67
 
68
  const H_MONTHS = ["محرم","صفر","ربيع الأول","ربيع الاول","ربيع الآخر","ربيع الاخر","جمادى الأولى","جمادى الاولى","جمادى الآخرة","جمادى الاخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو القعده","ذو الحجة","ذو الحجه"];
69
  function monthIndexHijri(name){
@@ -446,12 +454,14 @@ const SAMPLE = `نوع المشكلة: لا استطيع اكمال الاستم
446
  المسح: الخبر
447
  المنطقة: الشرقية`;
448
 
449
- const STATE_KEY="ticketParserState_v10_12";
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","ticketParserState_v10_11","ticketParserState_v10_12"
 
 
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
  }