File size: 5,793 Bytes
b6f7f27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// 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 + ' وحدة نقدية';
                            }
                        }
                    }
                }
            }
        });
    }
});