تحويل الجدول لأوقات رمضان

يمكنك تشغيل الكود التالي في المتصفح لتحويل جدولك على أوقات رمضان

طريقة الاستعمال:

  1. ادخل على بوابتي الاكاديمية

  2. نهاية الصفحة عند أكاديمي اختار الجدول الدراسي

  3. اعلى يسار الصفحة أختار الجدول الاسبوعي

  4. اضغط كلك يمين في اي مكان فارغ

  5. اختار "inspect" او بالعربي "فحص"

  6. اختار "console" او بالعربي "لوحة التحكم"

  7. الصق الكود في خانة الكتابة (اذا ما تقدر تلصق تحتاج تكتب allow pasting وتضغط انتر بعدها راح تصير تقدر تلصق)

  8. ارسل (اضغط Enter)

  9. اكتب "طالب" او "طالبة"

  10. اضغط Ok

(() => {
  const stripArabic = (s) =>
    (s ?? "").trim().replace(/\s+/g, "").replace(/[ًٌٍَُِّْـ]/g, "");

  const choice = stripArabic(prompt("اكتب نوع الجدول: طالب أو طالبة"));
  const isMale = choice === "طالب";
  const isFemale = choice === "طالبة";

  if (!isMale && !isFemale) {
    alert("الرجاء كتابة: طالب أو طالبة");
    return;
  }

  function canonRange(text) {
    const t = (text ?? "").replace(/[\u200e\u200f]/g, " ");
    const m = t.match(/(\d{1,2})\s*:\s*(\d{2})\s*-\s*(\d{1,2})\s*:\s*(\d{2})/);
    if (!m) return null;
    const h1 = String(parseInt(m[1], 10));
    const m1 = m[2];
    const h2 = String(parseInt(m[3], 10));
    const m2 = m[4];
    return `${h1}:${m1} - ${h2}:${m2}`;
  }

  const maleMappingRaw = {
    "8:00 - 8:50": "9:00 - 9:35",
    "9:00 - 9:50": "9:40 - 10:15",
    "10:00 - 10:50": "10:20 - 10:55",
    "11:00 - 11:50": "11:00 - 11:35",
    "12:00 - 12:50": "___",
    "13:00 - 13:50": "11:40 - 12:15",
    "14:00 - 14:50": "12:20 - 12:55",
    "15:00 - 15:50": "___",
    "16:00 - 16:50": "1:05 - 1:40",
    "17:00 - 17:50": "1:45 - 2:20",
    "18:00 - 18:50": "2:25 - 3:00",
    "19:00 - 19:50": "3:05 - 3:40",
    "20:00 - 20:50": "3:45 - 4:20",
    "21:00 - 21:50": "4:30 - 5:05",
  };

  const femaleMappingRaw = {
    "8:00 - 8:50": "9:00 - 9:35",
    "9:00 - 9:50": "9:40 - 10:15",
    "10:00 - 10:50": "10:20 - 10:55",
    "11:00 - 11:50": "11:00 - 11:35",
    "12:00 - 12:50": "11:40 - 12:15",
    "13:00 - 13:50": "12:20 - 12:55",
    "14:00 - 14:50": "1:05 - 1:40",
    "15:00 - 15:50": "1:45 - 2:20",
    "16:00 - 16:50": "2:25 - 3:00",
    "17:00 - 17:50": "3:05 - 3:40",
    "18:00 - 18:50": "3:45 - 4:20",
    "19:00 - 19:50": "4:30 - 5:05",
  };

  function buildMapping(raw) {
    const out = {};
    for (const [k, v] of Object.entries(raw)) {
      const ck = canonRange(k);
      if (ck) out[ck] = v;
    }
    return out;
  }

  const mapping = isMale ? buildMapping(maleMappingRaw) : buildMapping(femaleMappingRaw);

  document
    .querySelectorAll("table.table-border-custom tbody > tr > th[scope='row']")
    .forEach((th) => {
      const original = canonRange(th.textContent);
      if (!original) return;
      const newTime = mapping[original];
      if (isMale && (newTime === "___" || newTime == null)) {
        th.closest("tr")?.remove();
        return;
      }
      if (newTime) th.textContent = newTime;
    });
})();