Download static/script.js from rabietiji1/Islamic-Finance-NLP-Risk-Model: direct link, hf CLI and curl.
- Browser
- Download file 5.79 kB
-
https://huggingface.co/spaces/rabietiji1/Islamic-Finance-NLP-Risk-Model/resolve/main/static/script.js
- Command line
-
hf download hf://spaces/rabietiji1/Islamic-Finance-NLP-Risk-Model/static/script.js
-
curl -L -o script.js https://huggingface.co/spaces/rabietiji1/Islamic-Finance-NLP-Risk-Model/resolve/main/static/script.js
5.79 kB
| // static/script.js | |
| document.addEventListener("DOMContentLoaded", function() { | |
| // 1. التحقق من المدخلات لمنع القيم السالبة أو الصفرية في الكميات والأسعار | |
| const forms = document.querySelectorAll('form'); | |
| forms.forEach(form => { | |
| form.addEventListener('submit', function(event) { | |
| const numberInputs = form.querySelectorAll('input[type="number"]'); | |
| let isValid = true; | |
| numberInputs.forEach(input => { | |
| if (parseFloat(input.value) <= 0 && input.name.includes('quantity')) { | |
| alert("يرجى إدخال كميات موجبة أكبر من الصفر للحفاظ على دقة النمذجة الرياضية."); | |
| isValid = false; | |
| } | |
| }); | |
| if (!isValid) { | |
| event.preventDefault(); // إيقاف الإرسال | |
| } | |
| }); | |
| }); | |
| // 2. معالجة ورسم المبيان التفاعلي المحسن | |
| const vaElement = document.getElementById('va_value_hidden'); | |
| const chartCanvas = document.getElementById('vaChart'); | |
| if (vaElement && chartCanvas) { | |
| const vaValue = parseFloat(vaElement.value); | |
| const ctx = chartCanvas.getContext('2d'); | |
| // إنشاء تدرج لوني (Gradient) احترافي للرسم البياني | |
| const gradient = ctx.createLinearGradient(0, 0, 0, 300); | |
| if (vaValue >= 0) { | |
| // تدرج لوني للنمو الاقتصادي (أخضر) | |
| gradient.addColorStop(0, 'rgba(39, 174, 96, 0.9)'); | |
| gradient.addColorStop(1, 'rgba(46, 204, 113, 0.3)'); | |
| } else { | |
| // تدرج لوني للانكماش الاقتصادي (أحمر) | |
| gradient.addColorStop(0, 'rgba(192, 57, 43, 0.9)'); | |
| gradient.addColorStop(1, 'rgba(231, 76, 60, 0.3)'); | |
| } | |
| const borderColor = vaValue >= 0 ? '#27ae60' : '#c0392b'; | |
| const chartLabel = vaValue >= 0 ? 'قيمة مضافة موجبة (مساهمة في النمو الاقتصادي)' : 'قيمة مقتطعة سالبة (عائق للنمو الاقتصادي)'; | |
| new Chart(ctx, { | |
| type: 'bar', | |
| data: { | |
| labels: ['مؤشر الأثر الاقتصادي الكلي (VA)'], | |
| datasets: [{ | |
| label: chartLabel, | |
| data: [vaValue], | |
| backgroundColor: gradient, | |
| borderColor: borderColor, | |
| borderWidth: 2, | |
| borderRadius: 8, // حواف دائرية احترافية | |
| barPercentage: 0.4 // ضبط عرض العمود ليكون أكثر أناقة | |
| }] | |
| }, | |
| options: { | |
| responsive: true, | |
| maintainAspectRatio: false, | |
| animation: { | |
| duration: 1500, // حركة سلسة عند التحميل | |
| easing: 'easeOutQuart' | |
| }, | |
| scales: { | |
| y: { | |
| beginAtZero: true, | |
| grid: { | |
| color: 'rgba(0, 0, 0, 0.05)', | |
| borderDash: [5, 5] // خطوط شبكة خلفية منقطة | |
| }, | |
| title: { | |
| display: true, | |
| text: 'القيمة النقدية (VA)', | |
| font: { | |
| family: "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif", | |
| size: 14, | |
| weight: 'bold' | |
| } | |
| } | |
| }, | |
| x: { | |
| grid: { | |
| display: false // إخفاء خطوط الشبكة العمودية لنظافة التصميم | |
| }, | |
| ticks: { | |
| font: { | |
| family: "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif", | |
| size: 15, | |
| weight: 'bold' | |
| } | |
| } | |
| } | |
| }, | |
| plugins: { | |
| legend: { | |
| display: true, | |
| position: 'top', | |
| labels: { | |
| font: { | |
| family: "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif", | |
| size: 13 | |
| } | |
| } | |
| }, | |
| tooltip: { | |
| backgroundColor: 'rgba(44, 62, 80, 0.95)', | |
| titleFont: { size: 14, family: "'Segoe UI'" }, | |
| bodyFont: { size: 15, family: "'Segoe UI'", weight: 'bold' }, | |
| padding: 15, | |
| displayColors: false, | |
| cornerRadius: 8, | |
| callbacks: { | |
| label: function(context) { | |
| let value = context.parsed.y; | |
| let prefix = value >= 0 ? ' المحصلة: +' : ' المحصلة: '; | |
| return prefix + value + ' وحدة نقدية'; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }); | |
| } | |
| }); |