تحسين كود HTML
Creado el: 14 de enero de 2025
Creado el: 14 de enero de 2025
Enhancing HTML structure
I’m tasked with optimizing HTML code. Considering semantic elements, accessibility features, and design improvements like Bootstrap or CSS libraries. Progress is steady, ensuring a more robust and visually appealing HTML page.
Enhancing experience
I’m working on improved user experience with placeholders, explanations, and modern design elements. Features like input field placeholders, background colors, CSS transitions or animations, HTML attributes, and strategic navigation enhancements are being considered.
Thought about HTML code improvements لمدة 4 ثانية
فيما يلي نُسخة مُحسّنة من الكود مع بعض الأفكار التصميمية والإضافات البرمجية المقترحة. حاولتُ جعل الصفحة أكثر جاذبية وتنظيمًا، مع إضافة بعض التعليقات لتوضيح الأفكار. بالطبع يمكنك تطويرها أكثر، وإضافة مكتبات مثل Bootstrap أو أي إطار عمل (Framework) آخر إذا أردت مزيدًا من التخصيص.
<!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8" /> <title>تحليل الجذور العربية بنظام الحركة الدقيقة</title> <!-- تحسين المظهر عبر CSS: ألوان، خطوط، تباعد، إلخ --> <style> /* الخط الأساسي */ body { font-family: "Tajawal", Arial, sans-serif; margin: 0; padding: 0; background-color: #f9f9f9; color: #333; line-height: 1.6; } /* تنسيق رأس الصفحة */ header { background-color: #4caf50; color: #fff; padding: 1rem; text-align: center; } header h1 { margin: 0; font-size: 1.8rem; } /* حاوية المحتوى الرئيسية */ main { max-width: 1000px; margin: 2rem auto; padding: 1rem; background-color: #fff; border-radius: 10px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } /* تنسيق قسم الإدخال والزر */ .input-section { display: flex; flex-direction: column; align-items: flex-start; gap: 0.5rem; margin-bottom: 1.5rem; } .input-section label { font-weight: bold; margin-bottom: 0.3rem; } .input-section input[type="text"] { padding: 0.5rem; font-size: 1rem; border: 1px solid #ccc; border-radius: 5px; width: 200px; } .input-section button { align-self: flex-start; padding: 0.6rem 1rem; font-size: 1rem; background-color: #4caf50; color: #fff; border: none; border-radius: 5px; cursor: pointer; } .input-section button:hover { background-color: #45a049; } /* تنسيق قسم النتائج */ #results { padding: 1rem; border: 1px solid #ddd; border-radius: 5px; background-color: #fafafa; margin-bottom: 2rem; } #results h2 { margin-top: 0; } #results p { margin: 0.3rem 0; } #results span { color: #4caf50; font-weight: bold; } /* تنسيق الجدول */ h2.table-title { margin-top: 2rem; text-align: center; } table { width: 100%; margin: 1rem auto; border-collapse: collapse; } th, td { border: 1px solid #ccc; padding: 0.8rem; text-align: center; } th { background-color: #f1f1f1; } /* تنسيق الرابط */ .about-link { display: inline-block; margin-top: 1rem; text-decoration: none; color: #2196f3; } .about-link:hover { text-decoration: underline; } /* تذييل الصفحة */ footer { text-align: center; padding: 1rem; background-color: #fafafa; color: #777; margin-top: 2rem; border-top: 1px solid #eee; } </style> </head> <body> <!-- رأس الصفحة --> <header> <h1>تحليل الجذور العربية بنظام الحركة الدقيقة</h1> </header> <!-- المحتوى الرئيسي --> <main> <!-- قسم إدخال الجذر وزر التحليل --> <section class="input-section"> <label for="rootInput">أدخل الجذر الثلاثي:</label> <input type="text" id="rootInput" name="rootInput" placeholder="مثال: ك ت ب" maxlength="3" title="يُرجى إدخال 3 حروف عربية فقط." /> <button onclick="analyzeRoot()">تحليل</button> </section> <!-- قسم عرض النتائج --> <section id="results" style="display: none;"> <h2>النتائج:</h2> <p><b>الجذر:</b> <span id="root"></span></p> <p><b>الحركات الدقيقة:</b> <span id="movements"></span></p> <p><b>التدفق التسلسلي:</b> <span id="sequence"></span></p> <p><b>المعنى المقترح:</b> <span id="meaning"></span></p> </section> <!-- جدول الحركات الدقيقة --> <h2 class="table-title">جدول الحركات الدقيقة</h2> <table> <thead> <tr> <th>الحرف</th> <th>الحركة الدقيقة</th> </tr> </thead> <tbody> <tr><td>ا</td><td>التفرد / الاستقامة</td></tr> <tr><td>ب</td><td>الاحتواء / الإحاطة</td></tr> <tr><td>ت</td><td>الامتداد المركز / الانتشار المتحكم به</td></tr> <tr><td>ث</td><td>الانتشار المتناثر / الانتشار الدقيق</td></tr> <tr><td>ج</td><td>التطويق / الإحاطة بمنحنى</td></tr> <tr><td>ح</td><td>النبض الداخلي / التنفس العميق</td></tr> <tr><td>خ</td><td>التحول الداخلي / التغيير الدقيق</td></tr> <tr><td>د</td><td>الدفع الموجه / الاندفاع للأمام</td></tr> <tr><td>ذ</td><td>الاتصال المحدد / الإشارة الحادة</td></tr> <tr><td>ر</td><td>التدفق المتكرر / الحركة المتدحرجة</td></tr> <tr><td>ز</td><td>الزيادة / النمو</td></tr> <tr><td>س</td><td>الانزلاق السلس / الحركة الأفعوانية</td></tr> <tr><td>ش</td><td>التفرع / الانقسام / التشتت</td></tr> <tr><td>ص</td><td>الصلابة / الاستقرار / الثبات</td></tr> <tr><td>ض</td><td>الصلابة المضغوطة / الانضغاط الكثيف</td></tr> <tr><td>ط</td><td>القوة المغلفة / التغطية القوية</td></tr> <tr><td>ظ</td><td>الوضوح الجلي / الانكشاف المشع</td></tr> <tr><td>ع</td><td>الإدراك العميق / الرؤية الداخلية</td></tr> <tr><td>غ</td><td>العمق المخفي / الحجب</td></tr> <tr><td>ف</td><td>الفتح / الانشقاق / الانفتاح</td></tr> <tr><td>ق</td><td>الحد الحازم / التحديد الراسخ</td></tr> <tr><td>ك</td><td>السعة / الإمكانية / القدرة على الاحتواء</td></tr> <tr><td>ل</td><td>الالتصاق / الارتباط / الربط</td></tr> <tr><td>م</td><td>الالتفاف في سائل / الغمر</td></tr> <tr><td>ن</td><td>الانبعاث / الظهور / التجلي النشط</td></tr> <tr><td>ه</td><td>الزفير الخفيف / التدفق اللطيف</td></tr> <tr><td>و</td><td>الاتصال / الربط / الامتداد</td></tr> <tr><td>ي</td><td>الاتجاه / الإشارة / الوصول</td></tr> </tbody> </table> <a class="about-link" href="about.html">حول نظام الحركة الدقيقة</a> </main> <!-- تذييل الصفحة --> <footer> <p>جميع الحقوق محفوظة © 2025</p> </footer> <!-- أكواد جافاسكربت --> <script> function analyzeRoot() { const rootInput = document.getElementById("rootInput"); const rootValue = rootInput.value.trim(); // التحقق من صحة الإدخال (طول 3 أحرف عربية مثلًا) if (rootValue.length !== 3) { alert("الرجاء إدخال جذر ثلاثي صحيح (3 أحرف)."); return; } // عرض قسم النتائج document.getElementById("results").style.display = "block"; // وضع الجذر في مكان عرضه document.getElementById("root").textContent = rootValue; // استدعاء الدوال لتحليل الجذر document.getElementById("movements").textContent = getMovements(rootValue); document.getElementById("sequence").textContent = getSequence(rootValue); document.getElementById("meaning").textContent = getMeaning(rootValue); } function getMovements(root) { // (مثال بسيط، يمكن توسيعه أو تعديله) const movementMap = { 'ا': 'التفرد / الاستقامة', 'ب': 'الاحتواء / الإحاطة', 'ت': 'الامتداد المركز / الانتشار المتحكم به', 'ث': 'الانتشار المتناثر / الانتشار الدقيق', 'ج': 'التطويق / الإحاطة بمنحنى', 'ح': 'النبض الداخلي / التنفس العميق', 'خ': 'التحول الداخلي / التغيير الدقيق', 'د': 'الدفع الموجه / الاندفاع للأمام', 'ذ': 'الاتصال المحدد / الإشارة الحادة', 'ر': 'التدفق المتكرر / الحركة المتدحرجة', 'ز': 'الزيادة / النمو', 'س': 'الانزلاق السلس / الحركة الأفعوانية', 'ش': 'التفرع / الانقسام / التشتت', 'ص': 'الصلابة / الاستقرار / الثبات', 'ض': 'الصلابة المضغوطة / الانضغاط الكثيف', 'ط': 'القوة المغلفة / التغطية القوية', 'ظ': 'الوضوح الجلي / الانكشاف المشع', 'ع': 'الإدراك العميق / الرؤية الداخلية', 'غ': 'العمق المخفي / الحجب', 'ف': 'الفتح / الانشقاق / الانفتاح', 'ق': 'الحد الحازم / التحديد الراسخ', 'ك': 'السعة / الإمكانية / القدرة على الاحتواء', 'ل': 'الالتصاق / الارتباط / الربط', 'م': 'الالتفاف في سائل / الغمر', 'ن': 'الانبعاث / الظهور / التجلي النشط', 'ه': 'الزفير الخفيف / التدفق اللطيف', 'و': 'الاتصال / الربط / الامتداد', 'ي': 'الاتجاه / الإشارة / الوصول' }; let movements = ""; for (let i = 0; i < root.length; i++) { const letter = root[i]; if (movementMap[letter]) { movements += letter + ": " + movementMap[letter] + "، "; } else { movements += letter + ": (غير مُعرّف)، "; } } // إزالة الفاصلة الأخيرة return movements.slice(0, -2); } function getSequence(root) { // مثال بسيط لإنشاء وصف تسلسلي؛ يمكن تطويره بشكل أذكى const movementMap = { 'ا': ['التفرد','الاستقامة'], 'ب': ['الاحتواء','الإحاطة'], 'ت': ['الامتداد المركز','الانتشار المتحكم به'], 'ث': ['الانتشار المتناثر','الانتشار الدقيق'], 'ج': ['التطويق','الإحاطة بمنحنى'], 'ح': ['النبض الداخلي','التنفس العميق'], 'خ': ['التحول الداخلي','التغيير الدقيق'], 'د': ['الدفع الموجه','الاندفاع للأمام'], 'ذ': ['الاتصال المحدد','الإشارة الحادة'], 'ر': ['التدفق المتكرر','الحركة المتدحرجة'], 'ز': ['الزيادة','النمو'], 'س': ['الانزلاق السلس','الحركة الأفعوانية'], 'ش': ['التفرع','الانقسام','التشتت'], 'ص': ['الصلابة','الاستقرار','الثبات'], 'ض': ['الصلابة المضغوطة','الانضغاط الكثيف'], 'ط': ['القوة المغلفة','التغطية القوية'], 'ظ': ['الوضوح الجلي','الانكشاف المشع'], 'ع': ['الإدراك العميق','الرؤية الداخلية'], 'غ': ['العمق المخفي','الحجب'], 'ف': ['الفتح','الانشقاق','الانفتاح'], 'ق': ['الحد الحازم','التحديد الراسخ'], 'ك': ['السعة','الإمكانية','القدرة على الاحتواء'], 'ل': ['الالتصاق','الارتباط','الربط'], 'م': ['الالتفاف في سائل','الغمر'], 'ن': ['الانبعاث','الظهور','التجلي النشط'], 'ه': ['الزفير الخفيف','التدفق اللطيف'], 'و': ['الاتصال','الربط','الامتداد'], 'ي': ['الاتجاه','الإشارة','الوصول'] }; let seq = ""; for (let i = 0; i < root.length; i++) { const letter = root[i]; if (movementMap[letter]) { if (i === 0) { seq += letter + ": يبدأ بـ" + movementMap[letter][0] + "، "; } else if (i === 1) { // إن وُجد العنصر الثاني في القائمة if (movementMap[letter][1]) { seq += letter + ": ينتقل إلى " + movementMap[letter][1] + "، "; } else { seq += letter + ": ينتقل إلى " + movementMap[letter][0] + "، "; } } else { // العنصر الأخير if (movementMap[letter][1]) { seq += letter + ": ينتهي بـ" + movementMap[letter][1] + "، "; } else { seq += letter + ": ينتهي بـ" + movementMap[letter][0] + "، "; } } } else { seq += letter + ": (غير معروف)، "; } } // إزالة الفاصلة الأخيرة return seq.slice(0, -2); } function getMeaning(root) { // مثال على قاعدة بيانات مختصرة const meaningMap = { 'حرم': 'المنع، التقديس', 'سلم': 'النجاة، الاستسلام، الخضوع لله', 'كتب': 'التدوين، التسجيل، الفرض', 'نفع': 'الإفادة', 'ضرر': 'الإصابة بضرر، الأذى', 'قسم': 'الحلف، التوزيع', 'غفر': 'الصفح، المغفرة', 'برك': 'الزيادة، الدعاء بالبركة', 'خشي': 'الخوف مع الإجلال', 'رحم': 'العطف، الشفقة' }; // تحويل الجذر لإزالة أي فراغ بين الأحرف (مثال: "ك ت ب" → "كتب") const cleanedRoot = root.replace(/\s/g, ""); // ابحث عن معنى مباشر للجذر كما هو let proposedMeaning = meaningMap[cleanedRoot]; // إن لم نجد معنى مباشر، جرّب permutations بسيطة (في حال عكس الترتيب) if (!proposedMeaning) { // مثال: البحث في مفاتيح meaningMap const keys = Object.keys(meaningMap); for (let i = 0; i < keys.length; i++) { // لو كان نفس الأحرف تمامًا (دون اعتبار الترتيب) if (sortString(keys[i]) === sortString(cleanedRoot)) { proposedMeaning = meaningMap[keys[i]]; break; } } } return proposedMeaning || "جاري العمل على تحديث قاعدة البيانات..."; } // دالة مساعدة لترتيب أحرف سلسلة ما function sortString(str) { return str.split("").sort().join(""); } </script> </body> </html>
الهيكلية (Structure):
<header>
, <main>
, <footer>
لجعل الصفحة أكثر تنظيمًا ودلاليةً (Semantic).تصميم واجهة المستخدم (UI/UX):
التفاعلية (JavaScript):
display: none;
) ثم أظهرناه عند الضغط على زر التحليل، لجعل الصفحة أكثر تفاعلية.getMeaning
للبحث في قاعدة بيانات مختصرة، وإضافة إمكانية التحقق من الأحرف (مثلًا: "كتب" أو "بكت" مع مراعاة ترتيب الأحرف).قابلية التطوير (Extensibility):
الخط العربي:
@import url("https://fonts.googleapis.com/css2?family=Tajawal:wght@400;700&display=swap");
في قسم الـCSS).ملاحظات نهائية:
getMeaning
.بهذا الشكل، سيكون لديك صفحة ويب أكثر جمالًا وتنظيمًا، مع إمكانيات تفاعلية أفضل لخدمة هدفك في نشر نظام "الحركة الدقيقة" وتعليم الناس طريقة فهم الجذور العربية.
Transforming the design
Considering a complete redesign to enhance the aesthetics, potentially exploring a new color scheme, layout, or other creative elements.
Redesigning the code
Considering a gradient background and card-based design, removing constraints, incorporating animations, allowing for unlimited input, and integrating transitions for an engaging user experience.
Crafting a custom design
Building from scratch with a gradient background and card-based layout, removing the three-letter constraint, and considering the use of the 'Tajawal' font for a modern touch.
Thought about design and flexibility لمدة 8 ثانية
فيما يلي مثال كامل على إعادة تصميم الصفحة مع إزالة القيد على عدد الأحرف (بحيث يمكن إدخال أقل أو أكثر من 3 أحرف). يمكنك طبعًا تخصيص الألوان والخطوط والتأثيرات حسب ذوقك واحتياجك. الهدف هنا هو عرض فكرة تصميم مختلفة كليًّا.
<!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8" /> <title>تحليل الجذور العربية بنظام الحركة الدقيقة</title> <!-- يمكنك استيراد خط عربي من Google Fonts مثلاً (خط Tajawal) --> <link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@400;700&display=swap" rel="stylesheet" /> <style> /* تغيير التصميم بالكامل باستخدام ألوان هادئة وخلفية متدرّجة */ body { margin: 0; padding: 0; background: linear-gradient(135deg, #c7f0e9, #85cfcb); font-family: "Tajawal", sans-serif; color: #333; } /* تنسيق رأس الصفحة */ header { background-color: rgba(0, 0, 0, 0.2); /* خلفية شفافة قليلاً */ text-align: center; padding: 1rem; color: #fff; } header h1 { margin: 0; font-size: 1.8rem; } /* الحاوية الأساسية */ .container { max-width: 1200px; margin: 2rem auto; padding: 1rem; } /* بطاقة تحوي المحتوى */ .card { background-color: #fff; border-radius: 10px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); padding: 2rem; margin-bottom: 2rem; } /* تنسيق العنوان داخل الكارد */ .card h2 { margin-top: 0; text-align: center; color: #459d93; } /* قسم الإدخال والزر */ .input-section { display: flex; flex-direction: column; gap: 1rem; align-items: flex-start; margin-bottom: 1.5rem; } .input-label { font-weight: bold; font-size: 1rem; } #rootInput { padding: 0.6rem; border: 1px solid #ccc; border-radius: 5px; width: 200px; font-size: 1rem; } .analyze-btn { background-color: #459d93; color: #fff; border: none; border-radius: 5px; padding: 0.6rem 1.2rem; cursor: pointer; font-size: 1rem; transition: background-color 0.3s; } .analyze-btn:hover { background-color: #39877f; } /* قسم النتائج */ .results-container { border: 1px solid #eee; border-radius: 6px; background-color: #fafafa; padding: 1rem; margin-top: 1rem; } .results-container p { margin: 0.5rem 0; } .results-container span { color: #459d93; font-weight: bold; } /* تنسيق الجدول */ .movements-table { width: 100%; border-collapse: collapse; margin-top: 2rem; } .movements-table thead { background-color: #f1f1f1; } .movements-table th, .movements-table td { border: 1px solid #ccc; padding: 0.8rem; text-align: center; } .table-title { margin-top: 0; color: #459d93; text-align: center; } /* الرابط */ .about-link { display: inline-block; margin-top: 1rem; text-decoration: none; color: #2b6777; font-weight: bold; } .about-link:hover { text-decoration: underline; } /* تذييل الصفحة */ footer { text-align: center; padding: 1rem; background-color: rgba(0, 0, 0, 0.1); color: #fff; margin-top: 2rem; } footer p { margin: 0; } </style> </head> <body> <!-- رأس الصفحة --> <header> <h1>تحليل الجذور العربية بنظام الحركة الدقيقة</h1> </header> <!-- الحاوية الرئيسية --> <div class="container"> <!-- بطاقة تضم حقل الإدخال وزر التحليل --> <div class="card"> <h2>أدخل الجذر أو الأحرف المطلوبة</h2> <section class="input-section"> <label class="input-label" for="rootInput">الجذر / الحروف:</label> <input type="text" id="rootInput" name="rootInput" placeholder="مثال: كتبت أو ك ت ب أو حروف متعددة" /> <button class="analyze-btn" onclick="analyzeRoot()"> تحليل </button> </section> <!-- قسم النتائج سيظهر بعد الضغط على زر التحليل --> <div id="results" class="results-container" style="display: none;"> <p><b>الجذر أو المدخل:</b> <span id="root"></span></p> <p><b>الحركات الدقيقة:</b> <span id="movements"></span></p> <p><b>التدفق التسلسلي:</b> <span id="sequence"></span></p> <p><b>المعنى المقترح:</b> <span id="meaning"></span></p> </div> </div> <!-- بطاقة جدول الحركات الدقيقة --> <div class="card"> <h2 class="table-title">جدول الحركات الدقيقة</h2> <table class="movements-table"> <thead> <tr> <th>الحرف</th> <th>الحركة الدقيقة</th> </tr> </thead> <tbody> <tr><td>ا</td><td>التفرد / الاستقامة</td></tr> <tr><td>ب</td><td>الاحتواء / الإحاطة</td></tr> <tr><td>ت</td><td>الامتداد المركز / الانتشار المتحكم به</td></tr> <tr><td>ث</td><td>الانتشار المتناثر / الانتشار الدقيق</td></tr> <tr><td>ج</td><td>التطويق / الإحاطة بمنحنى</td></tr> <tr><td>ح</td><td>النبض الداخلي / التنفس العميق</td></tr> <tr><td>خ</td><td>التحول الداخلي / التغيير الدقيق</td></tr> <tr><td>د</td><td>الدفع الموجه / الاندفاع للأمام</td></tr> <tr><td>ذ</td><td>الاتصال المحدد / الإشارة الحادة</td></tr> <tr><td>ر</td><td>التدفق المتكرر / الحركة المتدحرجة</td></tr> <tr><td>ز</td><td>الزيادة / النمو</td></tr> <tr><td>س</td><td>الانزلاق السلس / الحركة الأفعوانية</td></tr> <tr><td>ش</td><td>التفرع / الانقسام / التشتت</td></tr> <tr><td>ص</td><td>الصلابة / الاستقرار / الثبات</td></tr> <tr><td>ض</td><td>الصلابة المضغوطة / الانضغاط الكثيف</td></tr> <tr><td>ط</td><td>القوة المغلفة / التغطية القوية</td></tr> <tr><td>ظ</td><td>الوضوح الجلي / الانكشاف المشع</td></tr> <tr><td>ع</td><td>الإدراك العميق / الرؤية الداخلية</td></tr> <tr><td>غ</td><td>العمق المخفي / الحجب</td></tr> <tr><td>ف</td><td>الفتح / الانشقاق / الانفتاح</td></tr> <tr><td>ق</td><td>الحد الحازم / التحديد الراسخ</td></tr> <tr><td>ك</td><td>السعة / الإمكانية / القدرة على الاحتواء</td></tr> <tr><td>ل</td><td>الالتصاق / الارتباط / الربط</td></tr> <tr><td>م</td><td>الالتفاف في سائل / الغمر</td></tr> <tr><td>ن</td><td>الانبعاث / الظهور / التجلي النشط</td></tr> <tr><td>ه</td><td>الزفير الخفيف / التدفق اللطيف</td></tr> <tr><td>و</td><td>الاتصال / الربط / الامتداد</td></tr> <tr><td>ي</td><td>الاتجاه / الإشارة / الوصول</td></tr> </tbody> </table> <a class="about-link" href="about.html">حول نظام الحركة الدقيقة</a> </div> </div> <!-- تذييل الصفحة --> <footer> <p>جميع الحقوق محفوظة © 2025</p> </footer> <!-- شيفرة جافاسكربت --> <script> function analyzeRoot() { const rootValue = document.getElementById("rootInput").value.trim(); // إظهار قسم النتائج document.getElementById("results").style.display = "block"; // عرض قيمة المدخل كما هي document.getElementById("root").textContent = rootValue || "لم يتم إدخال شيء"; // استدعاء الدوال document.getElementById("movements").textContent = getMovements(rootValue); document.getElementById("sequence").textContent = getSequence(rootValue); document.getElementById("meaning").textContent = getMeaning(rootValue); } // دالة للحصول على وصف الحركات الدقيقة لكل حرف function getMovements(root) { if (!root) return "لا يوجد حروف لتحليلها."; const movementMap = { 'ا': 'التفرد / الاستقامة', 'ب': 'الاحتواء / الإحاطة', 'ت': 'الامتداد المركز / الانتشار المتحكم به', 'ث': 'الانتشار المتناثر / الانتشار الدقيق', 'ج': 'التطويق / الإحاطة بمنحنى', 'ح': 'النبض الداخلي / التنفس العميق', 'خ': 'التحول الداخلي / التغيير الدقيق', 'د': 'الدفع الموجه / الاندفاع للأمام', 'ذ': 'الاتصال المحدد / الإشارة الحادة', 'ر': 'التدفق المتكرر / الحركة المتدحرجة', 'ز': 'الزيادة / النمو', 'س': 'الانزلاق السلس / الحركة الأفعوانية', 'ش': 'التفرع / الانقسام / التشتت', 'ص': 'الصلابة / الاستقرار / الثبات', 'ض': 'الصلابة المضغوطة / الانضغاط الكثيف', 'ط': 'القوة المغلفة / التغطية القوية', 'ظ': 'الوضوح الجلي / الانكشاف المشع', 'ع': 'الإدراك العميق / الرؤية الداخلية', 'غ': 'العمق المخفي / الحجب', 'ف': 'الفتح / الانشقاق / الانفتاح', 'ق': 'الحد الحازم / التحديد الراسخ', 'ك': 'السعة / الإمكانية / القدرة على الاحتواء', 'ل': 'الالتصاق / الارتباط / الربط', 'م': 'الالتفاف في سائل / الغمر', 'ن': 'الانبعاث / الظهور / التجلي النشط', 'ه': 'الزفير الخفيف / التدفق اللطيف', 'و': 'الاتصال / الربط / الامتداد', 'ي': 'الاتجاه / الإشارة / الوصول' }; let result = ""; for (let i = 0; i < root.length; i++) { const letter = root[i]; // اذا كان الحرف معروف في الماب نأتي بالحركة، وإلا نضع تنبيه بعدم التعريف if (movementMap[letter]) { result += `${letter}: ${movementMap[letter]}، `; } else { result += `${letter}: (غير معرّف)، `; } } // إزالة آخر فاصل return result.slice(0, -2); } // دالة للحصول على التدفق التسلسلي function getSequence(root) { if (!root) return "لا يوجد حروف لتحليلها."; const movementMap = { 'ا': ['التفرد','الاستقامة'], 'ب': ['الاحتواء','الإحاطة'], 'ت': ['الامتداد المركز','الانتشار المتحكم به'], 'ث': ['الانتشار المتناثر','الانتشار الدقيق'], 'ج': ['التطويق','الإحاطة بمنحنى'], 'ح': ['النبض الداخلي','التنفس العميق'], 'خ': ['التحول الداخلي','التغيير الدقيق'], 'د': ['الدفع الموجه','الاندفاع للأمام'], 'ذ': ['الاتصال المحدد','الإشارة الحادة'], 'ر': ['التدفق المتكرر','الحركة المتدحرجة'], 'ز': ['الزيادة','النمو'], 'س': ['الانزلاق السلس','الحركة الأفعوانية'], 'ش': ['التفرع','الانقسام','التشتت'], 'ص': ['الصلابة','الاستقرار','الثبات'], 'ض': ['الصلابة المضغوطة','الانضغاط الكثيف'], 'ط': ['القوة المغلفة','التغطية القوية'], 'ظ': ['الوضوح الجلي','الانكشاف المشع'], 'ع': ['الإدراك العميق','الرؤية الداخلية'], 'غ': ['العمق المخفي','الحجب'], 'ف': ['الفتح','الانشقاق','الانفتاح'], 'ق': ['الحد الحازم','التحديد الراسخ'], 'ك': ['السعة','الإمكانية','القدرة على الاحتواء'], 'ل': ['الالتصاق','الارتباط','الربط'], 'م': ['الالتفاف في سائل','الغمر'], 'ن': ['الانبعاث','الظهور','التجلي النشط'], 'ه': ['الزفير الخفيف','التدفق اللطيف'], 'و': ['الاتصال','الربط','الامتداد'], 'ي': ['الاتجاه','الإشارة','الوصول'] }; let sequenceText = ""; for (let i = 0; i < root.length; i++) { const letter = root[i]; const data = movementMap[letter] || ["غير معروف"]; // مثال بسيط: أول حرف "يبدأ"، الثاني "ينتقل"، والباقي "ينتهي" if (i === 0) { sequenceText += `${letter}: يبدأ بـ ${data[0]}، `; } else if (i === 1) { sequenceText += `${letter}: ينتقل إلى ${ data[1] ? data[1] : data[0] }، `; } else { sequenceText += `${letter}: ينتهي بـ ${ data[1] ? data[1] : data[0] }، `; } } return sequenceText.slice(0, -2); } // دالة لتوليد المعنى المقترح (مثال بسيط للغاية) function getMeaning(root) { if (!root) return "لا يوجد حروف لتحليلها."; const meaningMap = { "حرم": "المنع، التقديس", "سلم": "النجاة، الاستسلام، الخضوع لله", "كتب": "التدوين، التسجيل، الفرض", "نفع": "الإفادة", "ضرر": "الإصابة بضرر، الأذى", "قسم": "الحلف، التوزيع", "غفر": "الصفح، المغفرة", "برك": "الزيادة، الدعاء بالبركة", "خشي": "الخوف مع الإجلال", "رحم": "العطف، الشفقة" }; // إزالة الفراغات بين الأحرف (مثلاً "ك ت ب" -> "كتب") const cleanedRoot = root.replace(/\s+/g, ""); // محاولة إيجاد معنى للجذر كما هو let proposedMeaning = meaningMap[cleanedRoot]; // إن لم نجد معنى مباشر، نجرّب permutations بسيطة (ابحث في المفاتيح) if (!proposedMeaning) { const keys = Object.keys(meaningMap); for (let i = 0; i < keys.length; i++) { if (sortString(keys[i]) === sortString(cleanedRoot)) { proposedMeaning = meaningMap[keys[i]]; break; } } } return proposedMeaning || "لا يوجد معنى محدد في قاعدة البيانات الحالية."; } // دالة مساعدة لفرز الأحرف في سلسلة function sortString(str) { return str.split("").sort().join(""); } </script> </body> </html>
الخلفية المتدرجة (Gradient Background):
استخدمنا خلفية متدرجة ذات ألوان هادئة لجعل الواجهة لطيفة وجذّابة.
البطاقة (Card):
.card
) بخلفية بيضاء لتحسين التباين (Contrast).إزالة قيود عدد الأحرف:
قسم النتائج مخفي افتراضيًّا:
تصميم الجدول:
thead
) لتوضيح عناوين الأعمدة.تعليقات في الأكواد (Comments):
التخصيص والتطوير:
بهذا الشكل ستحصل على واجهة جديدة تمامًا، دون تقييد بعدد الأحرف المدخلة، وبنمط تصميم أكثر حداثة وأناقة. يمكنك دائمًا تخصيص الألوان والخطوط وترتيب العناصر حسب تفضيلاتك.
Integrating principles
I’m mapping out the steps to incorporate new Arabic script definitions into the HTML analysis code, ensuring the modified methodology aligns with the existing structure while enhancing the coding logic and wording.
Enhancing code clarity
I’m working through improving the HTML analysis code by refining letter definitions, providing clear explanations, and ensuring functionality. The goal is to create a more user-friendly final code snippet.
Enhancing code terminology
I’m refining Arabic script analysis terminology, adding media queries for mobile responsiveness, and updating function and variable names to align with the new methodology.
Refining Arabic script code
Wrapping up the refined HTML analysis code snippet: I’m adding mobile-friendly styling with meta tags and media queries, ensuring the new letter definitions and the "اعمل على جذر" approach are fully integrated.
Thought about improving code for methodology لمدة 8 ثانية
فيما يلي نسخة مُحسَّنة من الكود، تُراعي:
ملاحظة: هذا الكود اجتهاد لتوضيح كيف يمكن دمج أفكار المنهجية (حركة كل حرف ودوره في الجذر) ضمن صفحة ويب بسيطة. يمكنك توسعة منطق الدوال (مثل
getSequence
وgetMeaning
) لتجسيد تفاصيل أكثر عمقًا من المنهجية أو ربطها بقاعدة بيانات أو خوارزمية تحليل أشمل.
<!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>تحليل الجذور العربية بنظام الحركة الدقيقة</title> <!-- استيراد خط عربي (مثال) --> <link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@400;700&display=swap" rel="stylesheet" /> <style> /* جسم الصفحة: خلفية هادئة وخط مناسب للجوال */ body { margin: 0; padding: 0; font-family: "Tajawal", sans-serif; background: #f5f5f5; color: #333; line-height: 1.6; } /* ترويسة الصفحة */ header { background-color: #459d93; color: #fff; text-align: center; padding: 1rem; } header h1 { margin: 0; font-size: 1.5rem; } /* حاوية عامة للمحتوى */ .container { max-width: 900px; margin: 2rem auto; padding: 1rem; background-color: #fff; border-radius: 8px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } /* قسم الإدخال والزر */ .input-section { display: flex; flex-direction: column; align-items: flex-start; gap: 0.5rem; margin-bottom: 1.5rem; } .input-section label { font-weight: bold; } .input-section input[type="text"] { width: 100%; max-width: 300px; padding: 0.6rem; border: 1px solid #ccc; border-radius: 5px; } .input-section button { background-color: #459d93; color: #fff; padding: 0.6rem 1.2rem; font-size: 1rem; border: none; border-radius: 5px; cursor: pointer; } .input-section button:hover { background-color: #39877f; } /* قسم النتائج */ #results { display: none; padding: 1rem; background-color: #fafafa; border: 1px solid #eee; border-radius: 6px; margin-bottom: 1.5rem; } #results h2 { margin-top: 0; color: #459d93; } #results p { margin: 0.3rem 0; line-height: 1.4; } #results span { font-weight: bold; color: #459d93; } /* تنسيق الجدول */ .table-title { margin-top: 2rem; margin-bottom: 0.5rem; text-align: center; color: #459d93; } table { width: 100%; border-collapse: collapse; margin-bottom: 1rem; } th, td { border: 1px solid #ccc; padding: 0.8rem; text-align: center; font-size: 0.95rem; } thead { background-color: #f1f1f1; } /* رابط حول النظام */ .about-link { display: inline-block; margin-top: 1rem; text-decoration: none; color: #2b6777; font-weight: bold; } .about-link:hover { text-decoration: underline; } /* تذييل الصفحة */ footer { text-align: center; background-color: #f7f7f7; color: #777; padding: 1rem; margin-top: 2rem; font-size: 0.9rem; } /* الاستجابة للشاشات الأصغر */ @media (max-width: 600px) { .container { margin: 1rem; padding: 1rem; } header h1 { font-size: 1.2rem; } } </style> </head> <body> <!-- رأس الصفحة --> <header> <h1>تحليل الجذور العربية بنظام الحركة الدقيقة</h1> </header> <!-- الحاوية الرئيسية --> <div class="container"> <!-- قسم إدخال الأحرف --> <section class="input-section"> <label for="rootInput">أدخل الحروف (جذر أو أكثر):</label> <input type="text" id="rootInput" name="rootInput" placeholder="مثال: كتب أو حروف متتالية" /> <button onclick="analyzeRoot()">تحليل</button> </section> <!-- قسم عرض النتائج --> <section id="results"> <h2>النتائج:</h2> <p> <b>المدخل:</b> <span id="root"></span> </p> <p> <b>الحركات المجردة للحروف:</b> <span id="movements"></span> </p> <p> <b>التدفق التسلسلي:</b> <span id="sequence"></span> </p> <p> <b>المعنى المستنبط (تجريبي):</b> <span id="meaning"></span> </p> </section> <!-- جدول المعاني المجردة للحروف --> <h2 class="table-title">المعاني المجردة (وفق المنهجية الاجتهادية)</h2> <table> <thead> <tr> <th>الحرف</th> <th>المعنى المجرّد</th> </tr> </thead> <tbody> <tr><td>أ</td><td>البَدء أو الابتداء (إطلاق الحركة من نقطة الصفر)</td></tr> <tr><td>ب</td><td>الاحتواء أو الدخول في حيّز (قُرب أو التصاق)</td></tr> <tr><td>ت</td><td>تتابع متقطّع أو حركة متسلسلة ظاهرة</td></tr> <tr><td>ث</td><td>تفرّع أو تشعّب خفيف أو تكرار بسيط</td></tr> <tr><td>ج</td><td>جمع أو انعطاف أو التقاء في نقطة محدّدة</td></tr> <tr><td>ح</td><td>حركة باطنية أو اندفاع داخلي</td></tr> <tr><td>خ</td><td>خروج أو انكشاف (مع صوت أو أثر واضح)</td></tr> <tr><td>د</td><td>دفع أو توجيه باتجاه محدّد</td></tr> <tr><td>ذ</td><td>ذهاب أو امتداد للأمام مع دقّة أو حدّة</td></tr> <tr><td>ر</td><td>جريان أو ترديد متكرّر</td></tr> <tr><td>ز</td><td>ازدياد أو حركة تراكمية للأمام</td></tr> <tr><td>س</td><td>سريان أو امتداد بسيط ومستمر</td></tr> <tr><td>ش</td><td>تشعّب أو تداخل وتفرّق في آن واحد</td></tr> <tr><td>ص</td><td>صلابة أو استقامة متينة</td></tr> <tr><td>ض</td><td>ضغط أو احتواء مركّز في حيّز شديد</td></tr> <tr><td>ط</td><td>علوّ أو امتداد مع إحكام أو انبساط للأعلى</td></tr> <tr><td>ظ</td><td>ظهور متجاوز أو تجلٍّ واضح</td></tr> <tr><td>ع</td><td>عمق أو احتواء باطني (أصل داخلي)</td></tr> <tr><td>غ</td><td>غموض أو تغطية أو انطواء على خفاء</td></tr> <tr><td>ف</td><td>فتح أو انفراج؛ انفصال جزء عن جزء</td></tr> <tr><td>ق</td><td>قطع أو تحديد حادّ (حسم)</td></tr> <tr><td>ك</td><td>تكوّن أو تشكّل (احتواء مرن)</td></tr> <tr><td>ل</td><td>التواء أو ميل خفيف (اقتراب أو انحناء)</td></tr> <tr><td>م</td><td>مياه أو سيولة أو تجمّع مائع</td></tr> <tr><td>ن</td><td>تحوّل أو تذبذب ينبع من نقطة داخليّة</td></tr> <tr><td>ه</td><td>هبوب أو تنفّس (خروج هواء خفي)</td></tr> <tr><td>و</td><td>وصل أو ارتباط (مدّ أو تلاحم)</td></tr> <tr><td>ي</td><td>امتداد لين أو انسياب دقيق</td></tr> </tbody> </table> <a class="about-link" href="about.html">حول نظام الحركة الدقيقة</a> </div> <!-- تذييل الصفحة --> <footer> <p>جميع الحقوق محفوظة © 2025</p> </footer> <!-- الشيفرة البرمجية (JavaScript) --> <script> /** * الدالة الرئيسية التي تُحلّل الحروف المدخلة * وتعرض النتائج في قسم #results. */ function analyzeRoot() { const rootValue = document.getElementById("rootInput").value.trim(); // إظهار النتائج document.getElementById("results").style.display = "block"; document.getElementById("root").textContent = rootValue || "لم يتم إدخال حروف."; // استدعاء الدوال الفرعية للتحليل document.getElementById("movements").textContent = getLetterMovements(rootValue); document.getElementById("sequence").textContent = getSequentialFlow(rootValue); document.getElementById("meaning").textContent = getInferredMeaning(rootValue); } /** * خريطة المعاني المجردة للحروف، حسب المنهجية المقترحة. */ const letterMeanings = { 'أ': 'البَدء أو الابتداء', 'ا': 'البَدء أو الابتداء', // قد نضم الألف الطويلة والألف الهمزية معًا 'ب': 'الاحتواء أو الدخول في حيّز', 'ت': 'تتابع متقطّع أو حركة متسلسلة ظاهرة', 'ث': 'تفرّع خفيف أو تكرار بسيط', 'ج': 'جمع أو انعطاف أو التقاء محدّد', 'ح': 'حركة باطنية أو اندفاع داخلي', 'خ': 'خروج أو انكشاف', 'د': 'دفع أو توجيه', 'ذ': 'ذهاب أو امتداد حادّ للأمام', 'ر': 'جريان أو ترديد متكرّر', 'ز': 'ازدياد أو حركة تراكمية', 'س': 'سريان أو امتداد بسيط', 'ش': 'تشعّب أو تداخل وتفرّق', 'ص': 'صلابة أو استقامة', 'ض': 'ضغط أو احتواء مركّز', 'ط': 'علوّ أو امتداد للأعلى', 'ظ': 'ظهور متجاوز أو تجلٍّ واضح', 'ع': 'عمق أو احتواء باطني', 'غ': 'غموض أو تغطية أو انطواء', 'ف': 'فتح أو انفراج', 'ق': 'قطع أو تحديد حادّ', 'ك': 'تكوّن أو تشكّل (احتواء مرن)', 'ل': 'التواء أو ميل خفيف', 'م': 'مياه أو سيولة أو تجمّع مائع', 'ن': 'تحوّل أو تذبذب ينبع من الداخل', 'ه': 'هبوب أو تنفّس خفيف', 'و': 'وصل أو ارتباط', 'ي': 'امتداد لين أو انسياب دقيق' }; /** * تُرجع وصفًا مختصرًا لكل حرف مدخل. */ function getLetterMovements(input) { if (!input) return "لا يوجد حروف لتحليلها."; let result = ""; for (let i = 0; i < input.length; i++) { const letter = input[i]; // إذا وجدنا المعنى في خريطة الحروف عرضناه، وإلا وضعنا إشارة تنبيه if (letterMeanings[letter]) { result += `${letter}: ${letterMeanings[letter]}، `; } else { result += `${letter}: (غير معرّف)، `; } } // إزالة الفاصلة الأخيرة return result.replace(/، $/, ""); } /** * تُنشئ تدفقًا تسلسليًّا (كيف تتفاعل الحروف مع بعضها) بشكل بسيط. * يمكن تطوير هذه الدالة لتكون أكثر ذكاءً في تفسير التراتب (الأول، الأوسط، الأخير... إلخ). */ function getSequentialFlow(input) { if (!input) return "لا يوجد حروف لتحليلها."; let flowText = ""; const letters = input.split(""); for (let i = 0; i < letters.length; i++) { const letter = letters[i]; // جلب المعاني من الخريطة const meaning = letterMeanings[letter] || "غير معرّف"; if (i === 0) { flowText += `(${letter}) يبدأ بـ ${meaning}؛ `; } else if (i === letters.length - 1) { flowText += `(${letter}) يختتم بـ ${meaning} `; } else { flowText += `(${letter}) ينتقل إلى ${meaning}؛ `; } } return flowText; } /** * دالة تقديرية لاستخراج معنى من الجذر المدخل (تجريبي جدًّا). * يمكن ربطها بقاعدة بيانات أو خوارزميات أكثر تقدمًا. */ function getInferredMeaning(input) { if (!input) return "لا يوجد حروف لتحليلها."; // مثال على بعض الجذور المخزنة const storedMeanings = { "كتب": "التدوين أو التقييد أو الجمع (بحسب المعاجم التقليدية).", "فتح": "إزالة الإغلاق أو الكشف أو الانتصار.", "شرح": "بسط الأمر وتوسعته إلى أبعاد متعددة (انشراح).", "ضرب": "إيقاع قوة أو ضغط على شيء.", "نصر": "التأييد أو الدفع نحو الغلبة." }; // إزالة أي فراغات const cleanedInput = input.replace(/\s+/g, ""); // جرّب إيجاد المعنى مباشرة let proposedMeaning = storedMeanings[cleanedInput]; // إن لم يُعثر على معنى جاهز، نظهر رسالة افتراضية if (!proposedMeaning) { proposedMeaning = "لم يُعثر على معنى محدد في قاعدة البيانات؛ التحليل مستمر..."; } return proposedMeaning; } </script> </body> </html>
الاستجابة للشاشات (Responsive Design)
<meta name="viewport" ...>
ليعرض الصفحة بشكل مناسب على الهواتف.max-width
في .container
لجعل المحتوى مناسبًا للشاشات الصغيرة والكبيرة.اعتماد معاني الحروف من المنهجية
letterMeanings
التي تعكس المنهجية الجديدة بشكل مختصر.تحسين تسمية الدوال والمخرجات
getLetterMovements
(الحركات المجردة للحروف)، getSequentialFlow
(التدفق التسلسلي)، و getInferredMeaning
(المعنى المستنبط).إتاحة إدخال أي عدد من الحروف
(غير معرّف)
.القابليّة لتوسيع التحليل
تعليقات توضيحية
بهذه الطريقة، نحافظ على مبدأ الكود الأصلي من حيث وجود دوالٍ ثلاثة (للحركات والتدفق والمعنى)، لكننا قمنا:
يمكنك الآن متابعة تطوير خوارزمية getInferredMeaning
أو getSequentialFlow
لتكون أكثر دقة في ترجمة المنهجية المطروحة، وإضافة المزيد من الجذور إلى القاموس للتجارب العملية. بالتوفيق في مشروعك!
Mapping out an architecture
I’m supporting progress with a high-level architecture for merging functionalities and applying advanced technologies. Crafting an architecture outline to integrate Machine Learning, Neural Networks, and NLP insights.
Advancing functionality
Integrating new features like getQuranicExamples with APIs and an interactive table. Planning a mobile app and enhancing with ML placeholders to maintain consistent progress.
Thought about advanced Arabic root analysis لمدة 5 ثانية
فيما يلي مخططٌ تصوّريٌّ/عمليٌّ (مع نموذج أوّلي للكود) يُوضّح كيف يُمكن تحويل الكود الحالي إلى منصّةٍ متكاملة لتحليل الجذور العربية وفق منهجية "الحركة الدقيقة"، استنادًا إلى متطلّبات المشروع والأوامر العلمية التي حدّدتها. تمّ الحفاظ قدر الإمكان على هيكل الشيفرة الأصلية، مع إظهار كيفيّة تطوير الدوال وربطها بتقنيات أكثر تطوّرًا مثل تعلّم الآلة (Machine Learning) ومعالجة اللغة الطبيعية (NLP)، إضافةً إلى التمثيل البصري والميزات الأخرى المطلوبة.
يرتكز المشروع على تطوير أداة تحليل للجذور العربية باستخدام منهجية "الحركة الدقيقة"، بحيث:
لتحقيق ما ورد أعلاه، يُمكننا تقسيم النظام إلى طبقات أساسية:
طبقة الواجهة (Front-End / Mobile App):
طبقة الخدمات (Back-End Services):
طبقة تحليل اللغة (NLP + ML Engine):
طبقة البيانات (Databases + External APIs):
فيما يلي نسخة موسّعة من الكود الأصلي (HTML/JS) لتوضيح الأفكار الرئيسة. هذا ليس الكود النهائي المتكامل بجميع أجزاء الـMachine Learning و NLP (لأنّ ذلك يستلزم بيئة Back-End ولغة برمجة مثل Python/Node.js/Golang… إلخ)، لكنّه يبيّن كيف نعطي واجهة أمامية قادرة على التواصل مع خادم (Server) يوفّر الوظائف المطلوبة:
<!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>نظام تحليل الجذور العربية – الحركة الدقيقة</title> <!-- استيراد خط عربي (مثال) --> <link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@400;700&display=swap" rel="stylesheet" /> <!-- مكتبة رسوم بيانية (مثال: Chart.js أو D3.js) --> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <!-- أو D3.js: <script src="https://d3js.org/d3.v7.min.js"></script> --> <style> body { margin: 0; padding: 0; background: linear-gradient(135deg, #c7f0e9, #85cfcb); font-family: "Tajawal", sans-serif; color: #333; } header { background-color: rgba(0, 0, 0, 0.2); text-align: center; padding: 1rem; color: #fff; } header h1 { margin: 0; font-size: 1.6rem; } .container { max-width: 1200px; margin: 1rem auto; padding: 1rem; } .card { background-color: #fff; border-radius: 10px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); padding: 2rem; margin-bottom: 2rem; } .card h2 { margin-top: 0; text-align: center; color: #459d93; } .input-section { display: flex; flex-direction: column; gap: 1rem; align-items: flex-start; margin-bottom: 1.5rem; } .input-label { font-weight: bold; font-size: 1rem; } #rootInput { padding: 0.6rem; border: 1px solid #ccc; border-radius: 5px; width: 200px; font-size: 1rem; } .analyze-btn { background-color: #459d93; color: #fff; border: none; border-radius: 5px; padding: 0.6rem 1.2rem; cursor: pointer; font-size: 1rem; transition: background-color 0.3s; } .analyze-btn:hover { background-color: #39877f; } .results-container { border: 1px solid #eee; border-radius: 6px; background-color: #fafafa; padding: 1rem; margin-top: 1rem; } .results-container p { margin: 0.5rem 0; line-height: 1.5; } .results-container span { color: #459d93; font-weight: bold; } .movements-table { width: 100%; border-collapse: collapse; margin-top: 2rem; } .movements-table thead { background-color: #f1f1f1; } .movements-table th, .movements-table td { border: 1px solid #ccc; padding: 0.8rem; text-align: center; } .table-title { margin-top: 0; color: #459d93; text-align: center; } .about-link { display: inline-block; margin-top: 1rem; text-decoration: none; color: #2b6777; font-weight: bold; } .about-link:hover { text-decoration: underline; } footer { text-align: center; padding: 1rem; background-color: rgba(0, 0, 0, 0.1); color: #fff; margin-top: 2rem; } footer p { margin: 0; } /* مربع البحث في الجدول */ .search-box { margin-bottom: 1rem; text-align: right; } .search-box input[type="text"] { width: 100%; max-width: 300px; padding: 0.5rem; border: 1px solid #ccc; border-radius: 5px; } /* تهيئة الرسم البياني */ .chart-container { position: relative; height: 400px; /* قابل للتعديل */ margin-top: 2rem; } </style> </head> <body> <header> <h1>نظام تحليل الجذور العربية – الحركة الدقيقة</h1> </header> <div class="container"> <!-- البطاقة الأولى: إدخال الجذر وتحليله --> <div class="card"> <h2>أدخل الجذر أو الأحرف المراد تحليلها</h2> <section class="input-section"> <label class="input-label" for="rootInput">الجذر / الحروف:</label> <input type="text" id="rootInput" name="rootInput" placeholder="مثال: كتبت أو ك ت ب" /> <button class="analyze-btn" onclick="analyzeRoot()"> تحليل </button> </section> <div id="results" class="results-container" style="display: none;"> <p><b>المدخل:</b> <span id="root"></span></p> <p><b>الحركات الدقيقة (دمج getLetterMovements + getMovements):</b> <span id="movements"></span> </p> <p><b>التدفق التسلسلي (نموذج الذكاء الاصطناعي):</b> <span id="sequence"></span> </p> <p><b>المعنى المُستنبط (NLP + قاعدة بيانات):</b> <span id="meaning"></span> </p> <p><b>أمثلة قرآنية:</b> <span id="quranExamples"></span> </p> </div> <!-- الرسم البياني للتدفق التسلسلي --> <div class="chart-container"> <canvas id="flowChart"></canvas> </div> </div> <!-- البطاقة الثانية: جدول الحركات الدقيقة (تفاعلي) --> <div class="card"> <h2 class="table-title">جدول الحركات الدقيقة</h2> <div class="search-box"> <input type="text" id="searchTable" placeholder="ابحث عن حرف..."> </div> <table class="movements-table" id="movementsTable"> <thead> <tr> <th>الحرف</th> <th>الحركة الدقيقة</th> </tr> </thead> <tbody> <!-- عند النقر على حرف ما، يمكن عرض نافذة منبثقة أو توضيح إضافي --> <tr onclick="showLetterDetails('ا')"> <td>ا</td><td>التفرد / الاستقامة</td> </tr> <tr onclick="showLetterDetails('ب')"> <td>ب</td><td>الاحتواء / الإحاطة</td> </tr> <!-- ... تكملة الأحرف الأخرى ... --> <tr onclick="showLetterDetails('ي')"> <td>ي</td><td>الاتجاه / الإشارة / الوصول</td> </tr> </tbody> </table> <a class="about-link" href="about.html">حول نظام الحركة الدقيقة</a> </div> </div> <footer> <p>جميع الحقوق محفوظة © 2025</p> </footer> <!-- الشيفرة البرمجية (JavaScript) --> <script> /************************************************************** * (1) دمج getLetterMovements() مع getMovements() في دالّة واحدة **************************************************************/ function analyzeMovements(root) { if (!root) return "لا يوجد حروف لتحليلها."; // مثال على خريطة الحركات const movementMap = { 'ا': 'التفرد / الاستقامة', 'ب': 'الاحتواء / الإحاطة', // ... بقية الأحرف ... 'ي': 'الاتجاه / الإشارة / الوصول' }; let result = ""; for (let i = 0; i < root.length; i++) { const letter = root[i]; if (movementMap[letter]) { result += `${letter}: ${movementMap[letter]}، `; } else { result += `${letter}: (غير معرّف)، `; } } return result.replace(/، $/, ""); } /************************************************************** * (2) دالّة ذكية لتدفق التسلسلي (باستخدام ML و Neural Networks) * ملاحظة: هنا نضع مجرد استدعاء لـ API ML تحليلي، وليس الخوارزمية ذاتها. **************************************************************/ async function getSmartSequentialFlow(root) { if (!root) return "لا يوجد حروف لتحليلها."; // مثال: نستدعي خادم ML يقوم بتحليل العلاقات المعقدة // let response = await fetch("https://api.myserver.com/ml/sequentialflow", { // method: "POST", // headers: {"Content-Type": "application/json"}, // body: JSON.stringify({ text: root }) // }); // let data = await response.json(); // return data.sequenceDescription; // بشكل تجريبي حاليًا: return `هذا تمثيل تجريبي متقدم للتدفق التسلسلي لـ [${root}] من خوارزمية الذكاء الاصطناعي.`; } /************************************************************** * (3) بناء getInferredMeaning() على أساس علمي (NLP + قاعدة بيانات) **************************************************************/ async function getInferredMeaning(root) { if (!root) return "لا يوجد حروف لتحليلها."; // مثال: استدعاء خادم NLP/DB // let response = await fetch("https://api.myserver.com/nlp/meaning", { // method: "POST", // headers: {"Content-Type": "application/json"}, // body: JSON.stringify({ root }) // }); // let data = await response.json(); // return data.meaning; // تجريبي: return `المعنى المستنبط تجريبيًا لـ [${root}] استنادًا إلى قاعدة بيانات موسّعة وخوارزميات NLP.`; } /************************************************************** * (4) تطوير getQuranicExamples() * استخدام مكتبة قرآنية + API للبحث وعرض النتائج **************************************************************/ async function getQuranicExamples(root) { if (!root) return "لا يوجد حروف لتحليلها."; // مثال: استخدام API خاص بالقرآن // let response = await fetch(`https://api.quran.com/api/...&word=${root}`); // let data = await response.json(); // return data.verses.map(v => `سورة ${v.sura}: آية ${v.aya}`).join(" / "); // تجريبي: return `مثال قرآني لسياقات الجذر [${root}] ... (تم جلبه عبر API).`; } /************************************************************** * (5) تمثيل رسومي للتدفق التسلسلي (Chart.js مثلاً) **************************************************************/ function drawFlowChart(root) { const ctx = document.getElementById("flowChart").getContext("2d"); // افتراضًا: نبني بيانات بسيطة (يمكن لاحقًا ترجمتها لعُقَد edges/nodes) const letters = root.split(""); const labels = letters.map((l, i) => `حرف ${i+1}: ${l}`); const dataset = letters.map((_, i) => i+1); // تنظيف أي رسم سابق if (window.flowChartInstance) { window.flowChartInstance.destroy(); } window.flowChartInstance = new Chart(ctx, { type: 'line', data: { labels: labels, datasets: [ { label: "التدفق التسلسلي (تجريبي)", data: dataset, fill: false, borderColor: 'rgba(69,157,147, 1)', tension: 0.3 } ] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { min: 0, max: dataset.length + 1 } } } }); } /************************************************************** * الدالة الرئيسة عند الضغط على زر التحليل **************************************************************/ async function analyzeRoot() { const rootValue = document.getElementById("rootInput").value.trim(); const resultsDiv = document.getElementById("results"); if (!rootValue) { alert("يرجى إدخال جذر أو حروف."); return; } // عرض النتائج resultsDiv.style.display = "block"; document.getElementById("root").textContent = rootValue; // دمج getMovements + getLetterMovements const movementsText = analyzeMovements(rootValue); document.getElementById("movements").textContent = movementsText; // تدفق تسلسلي ذكي (ML) const sequenceText = await getSmartSequentialFlow(rootValue); document.getElementById("sequence").textContent = sequenceText; // استنتاج المعنى (NLP + DB) const meaningText = await getInferredMeaning(rootValue); document.getElementById("meaning").textContent = meaningText; // أمثلة قرآنية const quranText = await getQuranicExamples(rootValue); document.getElementById("quranExamples").textContent = quranText; // رسم مخطط التدفق (Chart.js) drawFlowChart(rootValue); } /************************************************************** * وظيفة (6) الجدول التفاعلي: بحث + نقر على الصف **************************************************************/ const searchInput = document.getElementById("searchTable"); const table = document.getElementById("movementsTable"); // البحث في الجدول searchInput.addEventListener("input", function () { const filter = this.value.trim(); const rows = table.getElementsByTagName("tr"); for (let i = 0; i < rows.length; i++) { let td = rows[i].getElementsByTagName("td")[0]; if (td) { let txtValue = td.textContent || td.innerText; if (txtValue.indexOf(filter) > -1) { rows[i].style.display = ""; } else { rows[i].style.display = "none"; } } } }); // عند النقر على صف ما function showLetterDetails(letter) { // يمكن عرض نافذة منبثقة بمزيد من التفاصيل حول الحرف alert(`شرح تفصيلي للحرف: ${letter}\n... يمكنك إضافة معلومات إضافية هنا ...`); } </script> </body> </html>
دمج getMovements
و getLetterMovements
:
analyzeMovements
بدلًا من اثنتين متشابهتين.دالّة ذكية للتدفق التسلسلي getSmartSequentialFlow
:
بناء getInferredMeaning
(NLP + قاعدة بيانات):
إنشاء getQuranicExamples
:
الجدول التفاعلي (انقر + بحث):
#searchTable
) لتصفية الأحرف في الجدول، وعند النقر على أي حرف تُفتح تفاصيل أو نافذة منبثقة. يمكن ربط الحرف بصفحاتٍ أعمق.تمثيل رسومي (Chart.js مثلًا):
تصميم متوافق مع الهاتف (Responsive):
<meta name="viewport">
.توسيع الوظائف المستقبلية:
getSmartSequentialFlow
و getInferredMeaning
و getQuranicExamples
، وضعنا تعليقات توضّح الآلية المقترحة لربط الواجهة الحالية بـBack-End متقدّم يقوم بالتعلّم العميق والبحث في القرآن.POST /ml/sequentialflow
: يُستقبل النص (الجذر) ثم يُعاد وصف التدفق التسلسلي (sequenceDescription).POST /nlp/meaning
: يُستقبل النص أو الجذر ويعاد معنى مستنبط من قواعد NLP.GET /quran/verses?root=...
: لإعادة الآيات المرتبطة بالجذر.تحليل جُمَل كاملة:
تحديد السياق الدلالي:
getMovements
و getLetterMovements
في دالة واحدة.بهذا الشكل، تكون قد تأسّست بنية النظام القابل للتوسّع والتحديث، مع دمج أحدث التقنيات المطلوبة (ML/NLP/APIs) لتقديم أداةٍ علميةٍ دقيقةٍ وسهلة الاستخدام، تُعنى بتحليل الجذور العربية وفق منظور "الحركة الدقيقة".
ملاحظة
ما زال هذا الكود نموذجًا أوّليًا (Prototype) للعرض؛ الأجزاء الخاصّة بتعلّم الآلة وNLP تتطلّب إعداد بيئة خلفيّة (Back-End) متكاملة، ومعالجة بيانات ضخمة لتدريب النماذج. لكنّ الشكل العام والتصميم التفاعلي بات واضحًا، ويمكن البناء عليه للوصول إلى النظام المنشود.
Integrating advanced elements
I’m mapping out the development of a self-contained HTML file, incorporating advanced features like merging functions, employing machine learning, and integrating natural language processing for enhanced data handling and analysis.
Integrating interactive elements
I’m working through integrating new elements, like an AI with a BFS algorithm, combining Quranic references, creating an interactive table with searching and popovers, and including a Chart.js or d3-based line chart.
Thought about completing the HTML code لمدة 4 ثانية
فيما يلي كود HTML + CSS + JavaScript كامل (في صفحة واحدة) يدمج الوظائف المطلوبة ويُحسِّنها قدر الإمكان بالاعتماد على الكود وحده. يشمل ذلك:
analyzeMovements()
.getSmartSequentialFlow()
.getInferredMeaning()
تعتمد على قائمة جذور ومعانٍ أكثر تنوعًا، وكأنها قاعدة بيانات مصغّرة.getQuranicExamples()
بدل الاتصال الفعلي بـAPI.ملاحظة:
- ما زال هذا الكود نموذجًا تجريبيًا (Prototype).
- محاكاة تقنيات الـML وNLP تتم عبر دوال وهميّة تُعيد نصوصًا تجريبية دون اتصال حقيقي بخوادم أو قواعد بيانات.
- يمكنك تطويره بربطه بخادم حقيقي لاحقًا.
<!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>نظام تحليل الجذور العربية – الحركة الدقيقة</title> <!-- استيراد خط عربي من Google Fonts (مثال) --> <link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@400;700&display=swap" rel="stylesheet" /> <!-- مكتبة Chart.js لعمل الرسومات البيانية --> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <style> /* تصميم عام للصفحة */ body { margin: 0; padding: 0; background: linear-gradient(135deg, #c7f0e9, #85cfcb); font-family: "Tajawal", sans-serif; color: #333; } header { background-color: rgba(0, 0, 0, 0.2); text-align: center; padding: 1rem; color: #fff; } header h1 { margin: 0; font-size: 1.6rem; } .container { max-width: 1200px; margin: 1rem auto; padding: 1rem; } .card { background-color: #fff; border-radius: 10px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); padding: 2rem; margin-bottom: 2rem; } .card h2 { margin-top: 0; text-align: center; color: #459d93; } /* قسم الإدخال */ .input-section { display: flex; flex-direction: column; gap: 1rem; align-items: flex-start; margin-bottom: 1.5rem; } .input-label { font-weight: bold; font-size: 1rem; } #rootInput { padding: 0.6rem; border: 1px solid #ccc; border-radius: 5px; width: 200px; font-size: 1rem; } .analyze-btn { background-color: #459d93; color: #fff; border: none; border-radius: 5px; padding: 0.6rem 1.2rem; cursor: pointer; font-size: 1rem; transition: background-color 0.3s; } .analyze-btn:hover { background-color: #39877f; } /* قسم النتائج */ .results-container { border: 1px solid #eee; border-radius: 6px; background-color: #fafafa; padding: 1rem; margin-top: 1rem; } .results-container p { margin: 0.5rem 0; line-height: 1.6; } .results-container span { color: #459d93; font-weight: bold; } /* الجدول */ .table-title { margin-top: 0; color: #459d93; text-align: center; } .movements-table { width: 100%; border-collapse: collapse; margin-top: 1rem; } .movements-table thead { background-color: #f1f1f1; } .movements-table th, .movements-table td { border: 1px solid #ccc; padding: 0.8rem; text-align: center; font-size: 0.95rem; } /* الرابط */ .about-link { display: inline-block; margin-top: 1rem; text-decoration: none; color: #2b6777; font-weight: bold; } .about-link:hover { text-decoration: underline; } /* تذييل الصفحة */ footer { text-align: center; padding: 1rem; background-color: rgba(0, 0, 0, 0.1); color: #fff; margin-top: 2rem; } footer p { margin: 0; } /* مربع البحث في الجدول */ .search-box { margin-bottom: 1rem; text-align: right; } .search-box input[type="text"] { width: 100%; max-width: 300px; padding: 0.5rem; border: 1px solid #ccc; border-radius: 5px; } /* الرسم البياني */ .chart-container { position: relative; height: 400px; margin-top: 2rem; } /* تكيّف للشاشات الصغيرة */ @media (max-width: 600px) { .container { margin: 0.5rem; padding: 0.5rem; } header h1 { font-size: 1.3rem; } .card { padding: 1rem; } } </style> </head> <body> <!-- رأس الصفحة --> <header> <h1>نظام تحليل الجذور العربية – الحركة الدقيقة</h1> </header> <!-- الحاوية الرئيسية --> <div class="container"> <!-- بطاقة (Card) لإدخال النص وعرض النتائج --> <div class="card"> <h2>أدخل الجذر أو الأحرف المطلوبة</h2> <section class="input-section"> <label class="input-label" for="rootInput">الجذر / الحروف:</label> <input type="text" id="rootInput" name="rootInput" placeholder="مثال: كتبت أو ك ت ب" /> <button class="analyze-btn" onclick="analyzeRoot()"> تحليل </button> </section> <!-- قسم النتائج (مخفٍ مبدئيًا) --> <div id="results" class="results-container" style="display: none;"> <p><b>المدخل:</b> <span id="root"></span></p> <p><b>الحركات الدقيقة (مُدمجة):</b> <span id="movements"></span></p> <p><b>التدفق التسلسلي الذكي:</b> <span id="sequence"></span></p> <p><b>المعنى المُستنبط (NLP):</b> <span id="meaning"></span></p> <p><b>أمثلة قرآنية:</b> <span id="quranExamples"></span></p> </div> <!-- الرسم البياني --> <div class="chart-container"> <canvas id="flowChart"></canvas> </div> </div> <!-- بطاقة (Card) لجدول الحركات الدقيقة التفاعلي --> <div class="card"> <h2 class="table-title">جدول الحركات الدقيقة</h2> <!-- بحث في الجدول --> <div class="search-box"> <input type="text" id="searchTable" placeholder="ابحث عن حرف..." /> </div> <table class="movements-table" id="movementsTable"> <thead> <tr> <th>الحرف</th> <th>الحركة الدقيقة</th> </tr> </thead> <tbody> <!-- انقر على أي صف لعرض التفاصيل --> <tr onclick="showLetterDetails('ا')"> <td>ا</td> <td>التفرد / الاستقامة</td> </tr> <tr onclick="showLetterDetails('ب')"> <td>ب</td> <td>الاحتواء / الإحاطة</td> </tr> <tr onclick="showLetterDetails('ت')"> <td>ت</td> <td>الامتداد المركز / الانتشار المتحكم به</td> </tr> <tr onclick="showLetterDetails('ث')"> <td>ث</td> <td>الانتشار المتناثر / الانتشار الدقيق</td> </tr> <tr onclick="showLetterDetails('ج')"> <td>ج</td> <td>التطويق / الإحاطة بمنحنى</td> </tr> <tr onclick="showLetterDetails('ح')"> <td>ح</td> <td>النبض الداخلي / التنفس العميق</td> </tr> <tr onclick="showLetterDetails('خ')"> <td>خ</td> <td>التحول الداخلي / التغيير الدقيق</td> </tr> <tr onclick="showLetterDetails('د')"> <td>د</td> <td>الدفع الموجه / الاندفاع للأمام</td> </tr> <tr onclick="showLetterDetails('ذ')"> <td>ذ</td> <td>الاتصال المحدد / الإشارة الحادة</td> </tr> <tr onclick="showLetterDetails('ر')"> <td>ر</td> <td>التدفق المتكرر / الحركة المتدحرجة</td> </tr> <tr onclick="showLetterDetails('ز')"> <td>ز</td> <td>الزيادة / النمو</td> </tr> <tr onclick="showLetterDetails('س')"> <td>س</td> <td>الانزلاق السلس / الحركة الأفعوانية</td> </tr> <tr onclick="showLetterDetails('ش')"> <td>ش</td> <td>التفرع / الانقسام / التشتت</td> </tr> <tr onclick="showLetterDetails('ص')"> <td>ص</td> <td>الصلابة / الاستقرار / الثبات</td> </tr> <tr onclick="showLetterDetails('ض')"> <td>ض</td> <td>الصلابة المضغوطة / الانضغاط الكثيف</td> </tr> <tr onclick="showLetterDetails('ط')"> <td>ط</td> <td>القوة المغلفة / التغطية القوية</td> </tr> <tr onclick="showLetterDetails('ظ')"> <td>ظ</td> <td>الوضوح الجلي / الانكشاف المشع</td> </tr> <tr onclick="showLetterDetails('ع')"> <td>ع</td> <td>الإدراك العميق / الرؤية الداخلية</td> </tr> <tr onclick="showLetterDetails('غ')"> <td>غ</td> <td>العمق المخفي / الحجب</td> </tr> <tr onclick="showLetterDetails('ف')"> <td>ف</td> <td>الفتح / الانشقاق / الانفتاح</td> </tr> <tr onclick="showLetterDetails('ق')"> <td>ق</td> <td>الحد الحازم / التحديد الراسخ</td> </tr> <tr onclick="showLetterDetails('ك')"> <td>ك</td> <td>السعة / الإمكانية / القدرة على الاحتواء</td> </tr> <tr onclick="showLetterDetails('ل')"> <td>ل</td> <td>الالتصاق / الارتباط / الربط</td> </tr> <tr onclick="showLetterDetails('م')"> <td>م</td> <td>الالتفاف في سائل / الغمر</td> </tr> <tr onclick="showLetterDetails('ن')"> <td>ن</td> <td>الانبعاث / الظهور / التجلي النشط</td> </tr> <tr onclick="showLetterDetails('ه')"> <td>ه</td> <td>الزفير الخفيف / التدفق اللطيف</td> </tr> <tr onclick="showLetterDetails('و')"> <td>و</td> <td>الاتصال / الربط / الامتداد</td> </tr> <tr onclick="showLetterDetails('ي')"> <td>ي</td> <td>الاتجاه / الإشارة / الوصول</td> </tr> </tbody> </table> <a class="about-link" href="about.html">حول نظام الحركة الدقيقة</a> </div> </div> <!-- تذييل الصفحة --> <footer> <p>جميع الحقوق محفوظة © 2025</p> </footer> <script> /******************************************************************* * 1) دمج الحركات الدقيقة (analyzeMovements) – بديل لـ getMovements() *******************************************************************/ function analyzeMovements(root) { if (!root) return "لا يوجد حروف لتحليلها."; const movementMap = { 'ا': 'التفرد / الاستقامة', 'ب': 'الاحتواء / الإحاطة', 'ت': 'الامتداد المركز / الانتشار المتحكم به', 'ث': 'الانتشار المتناثر / الانتشار الدقيق', 'ج': 'التطويق / الإحاطة بمنحنى', 'ح': 'النبض الداخلي / التنفس العميق', 'خ': 'التحول الداخلي / التغيير الدقيق', 'د': 'الدفع الموجه / الاندفاع للأمام', 'ذ': 'الاتصال المحدد / الإشارة الحادة', 'ر': 'التدفق المتكرر / الحركة المتدحرجة', 'ز': 'الزيادة / النمو', 'س': 'الانزلاق السلس / الحركة الأفعوانية', 'ش': 'التفرع / الانقسام / التشتت', 'ص': 'الصلابة / الاستقرار / الثبات', 'ض': 'الصلابة المضغوطة / الانضغاط الكثيف', 'ط': 'القوة المغلفة / التغطية القوية', 'ظ': 'الوضوح الجلي / الانكشاف المشع', 'ع': 'الإدراك العميق / الرؤية الداخلية', 'غ': 'العمق المخفي / الحجب', 'ف': 'الفتح / الانشقاق / الانفتاح', 'ق': 'الحد الحازم / التحديد الراسخ', 'ك': 'السعة / الإمكانية / القدرة على الاحتواء', 'ل': 'الالتصاق / الارتباط / الربط', 'م': 'الالتفاف في سائل / الغمر', 'ن': 'الانبعاث / الظهور / التجلي النشط', 'ه': 'الزفير الخفيف / التدفق اللطيف', 'و': 'الاتصال / الربط / الامتداد', 'ي': 'الاتجاه / الإشارة / الوصول' }; let result = ""; for (let i = 0; i < root.length; i++) { const letter = root[i]; if (movementMap[letter]) { result += `${letter}: ${movementMap[letter]}، `; } else { result += `${letter}: (غير معرّف)، `; } } return result.replace(/، $/, ""); } /******************************************************************* * 2) دالّة التدفق التسلسلي الذكي (تشبيه لـ ML/Neural Networks) *******************************************************************/ async function getSmartSequentialFlow(root) { if (!root) return "لا يوجد حروف لتحليلها."; // في كود حقيقي: استدعاء خادم API يعمل بخوارزمية ML // هنا: مجرد نص تجريبي يوحي بالتحليل الذكي return `هذا تحليل ذكي (تجريبي) لتدفق حروف [${root}] باستخدام شبكة عصبية محليّة.`; } /******************************************************************* * 3) دالّة استنباط المعنى (NLP + قاعدة بيانات وهمية) *******************************************************************/ async function getInferredMeaning(root) { if (!root) return "لا يوجد حروف لتحليلها."; // قاعدة بيانات موسعة تجريبية const largeMeaningMap = { "كتب": "التقييد والتدوين، أصله من الجمع والضم", "حرم": "المنع والتقديس", "سلم": "الخلاص أو الاستسلام والخضوع", "فتح": "إزالة الإغلاق والكشف", "شرح": "بسط الأمر وتفصيله", "ضرب": "إيقاع قوة أو ضغط على شيء", "برك": "الزيادة والثبوت والخير", "رحم": "العطف والشفقة", "علم": "الإدراك والمعرفة", "فهم": "الوعي و الإدراك التحليلي", "صلح": "إصلاح الشيء وجعله مستقيمًا", "خرج": "الانتقال من داخل إلى خارج أو الظهور للعلن" // ... يمكن إضافة المزيد ... }; // تنظيف المدخل من الفراغات const cleaned = root.replace(/\s+/g, ""); // جرّب إيجاد معنى مباشر let foundMeaning = largeMeaningMap[cleaned]; if (foundMeaning) { return `المعنى المعروف للجذر [${cleaned}]: ${foundMeaning}`; } // محاولة للبحث بالترتيب: // فرز الأحرف والمقارنة مع مفاتيح معجمية let sortedInput = sortString(cleaned); let keys = Object.keys(largeMeaningMap); for (let i = 0; i < keys.length; i++) { let sortedKey = sortString(keys[i]); if (sortedKey === sortedInput) { return `المعنى (بلا ترتيب) للجذر [${cleaned}]: ${largeMeaningMap[keys[i]]}`; } } // إن لم نجد شيئًا return `لم يتم العثور على معنى محدد للجذر [${cleaned}] في القاعدة التجريبية.`; } // دالة فرز الأحرف function sortString(str) { return str.split("").sort().join(""); } /******************************************************************* * 4) دالّة جلب الأمثلة القرآنية (محليّة تجريبية) *******************************************************************/ async function getQuranicExamples(root) { if (!root) return "لا يوجد حروف لتحليلها."; // قاعدة أمثلة قرآنية تجريبية const quranExamplesDB = { "كتب": [ "سورة البقرة، آية 183: \"يَا أَيُّهَا الَّذِينَ آمَنُوا كُتِبَ عَلَيْكُمُ الصِّيَامُ...\"", "سورة المائدة، آية 45: \"وَكَتَبْنَا عَلَيْهِمْ فِيهَا...\"" ], "حرم": [ "سورة البقرة، آية 144: \"... فَوَلِّ وَجْهَكَ شَطْرَ الْمَسْجِدِ الْحَرَامِ...\"", "سورة الأنعام، آية 151: \"... قُلْ تَعَالَوْا أَتْلُ مَا حَرَّمَ رَبُّكُمْ عَلَيْكُمْ...\"" ], "ضرب": [ "سورة البقرة، آية 26: \"إِنَّ اللَّهَ لَا يَسْتَحْيِي أَنْ يَضْرِبَ مَثَلًا مَا...\"" ] // ... وهكذا ... }; const cleaned = root.replace(/\s+/g, ""); const examples = quranExamplesDB[cleaned]; if (examples) { return examples.join(" | "); } else { return `لا توجد أمثلة قرآنية محفوظة للجذر [${cleaned}] في القاعدة التجريبية.`; } } /******************************************************************* * 5) تمثيل بياني للتدفق (Chart.js) *******************************************************************/ function drawFlowChart(root) { const ctx = document.getElementById("flowChart").getContext("2d"); const letters = root.split(""); const labels = letters.map((l, i) => `حرف ${i+1}: ${l}`); const dataset = letters.map((_, i) => i+1); // تدمير الرسم السابق (إن وجد) if (window.flowChartInstance) { window.flowChartInstance.destroy(); } window.flowChartInstance = new Chart(ctx, { type: 'line', data: { labels: labels, datasets: [{ label: "التدفق التسلسلي (توضيح تجريبي)", data: dataset, borderColor: 'rgba(69,157,147,1)', backgroundColor: 'rgba(69,157,147,0.1)', fill: true, tension: 0.3 }] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { min: 0, max: dataset.length + 1 } } } }); } /******************************************************************* * الدالة الرئيسية عند الضغط على "تحليل" *******************************************************************/ async function analyzeRoot() { const rootValue = document.getElementById("rootInput").value.trim(); if (!rootValue) { alert("يرجى إدخال جذر أو حروف!"); return; } // إظهار قسم النتائج document.getElementById("results").style.display = "block"; document.getElementById("root").textContent = rootValue; // الحركات الدقيقة let movementsText = analyzeMovements(rootValue); document.getElementById("movements").textContent = movementsText; // التدفق التسلسلي الذكي let seq = await getSmartSequentialFlow(rootValue); document.getElementById("sequence").textContent = seq; // المعنى المستنبط let meaning = await getInferredMeaning(rootValue); document.getElementById("meaning").textContent = meaning; // أمثلة قرآنية let quranEx = await getQuranicExamples(rootValue); document.getElementById("quranExamples").textContent = quranEx; // رسم المخطط البياني drawFlowChart(rootValue); } /******************************************************************* * 6) بحث تفاعلي في جدول الحركات الدقيقة *******************************************************************/ const searchInput = document.getElementById("searchTable"); const table = document.getElementById("movementsTable"); searchInput.addEventListener("input", function () { const filter = this.value.trim(); const rows = table.getElementsByTagName("tr"); for (let i = 0; i < rows.length; i++) { let td = rows[i].getElementsByTagName("td")[0]; if (td) { let txtValue = td.textContent || td.innerText; if (txtValue.indexOf(filter) > -1) { rows[i].style.display = ""; } else { rows[i].style.display = "none"; } } } }); /******************************************************************* * 7) عند النقر على حرف في الجدول *******************************************************************/ function showLetterDetails(letter) { // في مشروع فعلي: تظهر نافذة توضح تاريخ الحرف واستخداماته alert(`معلومات إضافية عن الحرف [${letter}]:\n` + "هنا يمكن عرض تاريخ الحرف، تطوره، واستخداماته المختلفة."); } </script> </body> </html>
الاستجابة للشاشات (Responsive):
meta viewport
لضبط العرض على الهواتف.دمج دالتيّ الحركات (analyzeMovements):
movementMap
داخل دالة واحدة فقط.محاكاة الذكاء الاصطناعي في getSmartSequentialFlow
:
استخدام قائمة أكبر لاستنباط المعاني في getInferredMeaning
:
أمثلة قرآنية في getQuranicExamples
:
البحث في جدول الحركات:
الرسوم البيانية:
drawFlowChart
تُنشئ مخططًا خطيًا (Line Chart) يُظهر تتابع الحروف.سهولة التوسّع:
هذا الكود هو صفحة HTML واحدة تجمع كل ما يمكن عمله محليًّا دون خادم خلفيّ حقيقي. يمكنك استخدامه كما هو، وتشغيله في متصفّحك مباشرة. وعند الحاجة إلى ربطه بتقنيات Machine Learning وNLP والواجهات البرمجية (APIs)، ستضيف تعديلات طفيفة على الدوال (getSmartSequentialFlow
, getInferredMeaning
, getQuranicExamples
) لتتصل بخادمك/مكتباتك المتقدّمة.